如何从第二列中删除0

时间:2018-10-29 04:43:09

标签: awk sed grep

我有一个看起来像这样的文件:

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

这是一种无效的编辑方式。
谢谢。

5 个答案:

答案 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并不是要删除数字中的零。