仅删除第一列字符串中的所有前导零

仅删除第一列字符串中的所有前导零

我有一个管道分隔文件,为了将其与相应的文件连接,我需要从第一列中删除前导零,但不能从文件中的任何其他列中删除前导零。

结构如下:

GA.01.02.070|GLS Add. GA 1/2/70|Wohl: Wagon d. Kelderära. ||||||
GA.01.02.071|GLS Add. GA 1/2/71|Tsä der Kelderära. Roßlau, 1935. ||||||
GA.01.02.072|GLS Add. GA 1/2/72|Rómni der Kelderära. ||||||
GA.01.02.073|GLS Add. GA 1/2/73|Wagen des Mets. Roßlau/ 1934. ||||||
GA.01.02.074|GLS Add. GA 1/2/74|Kastanja Ansin. ||||||
GA.01.02.075|GLS Add. GA 1/2/75|Raupa Ansin. ||||||

我想要的输出是:

GA.1.2.70|GLS Add. GA 1/2/70|Wohl: Wagon d. Kelderära. ||||||
GA.1.2.71|GLS Add. GA 1/2/71|Tsä der Kelderära. Roßlau, 1935. ||||||
GA.1.2.72|GLS Add. GA 1/2/72|Rómni der Kelderära. ||||||
GA.1.2.73|GLS Add. GA 1/2/73|Wagen des Mets. Roßlau/ 1934. ||||||
GA.1.2.74|GLS Add. GA 1/2/74|Kastanja Ansin. ||||||
GA.1.2.75|GLS Add. GA 1/2/75|Raupa Ansin. ||||||

我已经能够找到使用 sed 删除第一个前导零或全零的方法,但我还没有找到仅删除第一个管道之前的前导零的方法。

答案1

如果sed不是严格要求,这里有一个 AWK 脚本可以解决这个问题:

awk -F\| 'BEGIN { OFS = FS } { gsub("\\.0+", ".", $1); print }'

这会分割 上的记录|,并在输出上使用该记录;对于每条记录,它会替换第一个字段中的.一个或多个0by ,然后输出完整记录。.

相关内容