我有一个看起来像这样的文件:
k141_173024,001
k141_173071,002
k141_173527,021
k141_173652,034
k141_173724,041
...
如何从第二个字段的每一行中删除0?
理想的结果是:
k141_173024,1
k141_173071,2
k141_173527,21
k141_173652,34
k141_173724,41
...
我绑的是
cut -f 2 -d ',' file | awk '{print $1 + 0} > file2
cut -f 1 -d ',' file > file1
paste file1 file2 > final_file
这是一种无效的编辑方式。
谢谢。
答案 0 :(得分:4)
awk 'BEGIN{FS=OFS=","} {print $1 OFS $2+0}' Input.txt
通过加0强制为整数值
答案 1 :(得分:3)
如果只是逗号后的零(,001
至,1
,但,010
至,10
;则不是从第二列中删除0',但示例未明确显示要求),您可以将逗号和零替换为另一个逗号:
$ awk '{gsub(/,0+/,",")}1' file
k141_173024,1
k141_173071,2
k141_173527,21
k141_173652,34
k141_173724,41
答案 2 :(得分:2)
请您尝试以下。
awk 'BEGIN{FS=OFS=","} {gsub(/0/,"",$2)}1' Input_file
编辑: :要仅删除前导零,请尝试跟随。
awk 'BEGIN{FS=OFS=","} {sub(/^0+/,"",$2)}1' Input_file
答案 3 :(得分:2)
如果第二个字段是数字,则可以执行以下操作以删除前导零:
awk 'BEGIN{FS=OFS=","} {print $1 OFS int($2)}' file
根据@Inian的建议,可以将其进一步简化为:
awk -F, -v OFS=, '{$2=int($2)}1' file
答案 4 :(得分:1)
这可能对您有用(GNU sed):
sed 's/,0\+/,/' file
这将替换逗号,然后用逗号替换一个或多个零,从而从第二列中删除前导零。
P.S。我猜OP并不是要删除数字中的零。