我有一个包含以下内容的 csv 文件:
G11123,IT,AMIT,INDIA
G11124,IT,HEMANT,INDIA
.......
.......
我有大约 7000 行。
我需要另一个包含内容的 csv 文件:
G11,AMIT,INDIA
G11,HEMANT,INDIA
.........
.......
当我尝试以下命令时
awk 'BEGIN{FS=OFS=","} {print substr($1,1,3),$3,$4}' file.csv > temp.csv
当我检查 temp.csv 时,第一行没有按预期获得,而在所有其他行中,正确的子字符串可见:
,AMIT,INDIA
G11,HEMANT,INDIA
...............
...............
上面的命令有问题吗?
问候,
使用您显示的示例,请尝试以下awk
代码。如果您的 Input_file 中有超过 4 个字段,此代码甚至可以工作(因为它不是硬编码应该打印多少个字段)。
awk 'BEGIN{FS=OFS=","} {len=length($1);sub(".{"len-3"}$","",$1);$2="";sub(/,/,"")} 1' Input_file
说明:为以上添加详细说明。
awk ' ##Starting awk program from here.
BEGIN{ ##Starting BEGIN section of this program from here.
FS=OFS="," ##Setting FS and OFS to comma here.
}
{
len=length($1) ##Take length of 1st field here.
sub(".{"len-3"}$","",$1) ##Substituting everything apart from 1st 3 characters in 1st field with NULL.
$2="" ##Nullifying 2nd field here.
sub(/,/,"") ##Substituting comma with NULL here.
}
1 ##Printing current line here.
' Input_file ##Mentioning Input_file name here.
编辑:要删除控制 M 字符并打印行,可以尝试以下操作。
awk 'BEGIN{FS=OFS=","} {sub(/\r$/,"");len=length($1);sub(".{"len-3"}$","",$1);$2="";sub(/,/,"")} 1' Input_file
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句