我有一个管道分隔文件,为了将其与相应的文件连接,我需要从第一列中删除前导零,但不能从文件中的任何其他列中删除前导零。
结构如下:
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 }'
这会分割 上的记录|
,并在输出上使用该记录;对于每条记录,它会替换第一个字段中的.
一个或多个0
by ,然后输出完整记录。.