gpt4 book ai didi

linux - 根据其大小在每行的开头添加前缀

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:37 27 4
gpt4 key购买 nike

我有一个包含邮政编码和城市名称的文件,如下所示:

1234  foo
4321 foobar
64324 foofoobar
92001 bar

在数字和城市名称之间使用\t。我想使用 sed 或 shell 脚本将前缀 0 添加到每行 4 个数字

01234 foo
04321 foobar
64324 foofoobar
92001 bar

感谢您的帮助。

最佳答案

假设所有邮政编码都是数字,您可以使用 awk 中的 printf 命令完成任务,按照以下抄本(v 那里的字符只是为了显示制表位所在的位置):

pax> printf "v\tv\tv\n" ; cat infile
v v v
1234 rio xyz
4321 munich abc
64324 perth def
92001 paris qqq

pax> awk 'BEGIN {OFS = "\t"} {arg1 = $1; $1 = ""; printf "%05d%s\n", arg1, $0}' infile
01234 rio xyz
04321 munich abc
64324 perth def
92001 paris qqq

awk 命令首先从每一行中提取并删除第一个参数(a),然后将其与更改的行一起格式化。

您会注意到我还将输出字段分隔符设置为制表符,因为这似乎是您正在使用的。这可能不是必需的,它仅取决于您希望输出数据与输入的匹配程度。


(a) 从技术上讲,它只是将它设置为一个空字符串,参数本身仍然存在。这就是格式字符串中 %05d%s 之间不需要制表符的原因,因为制表符仍然存在。

关于linux - 根据其大小在每行的开头添加前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34983928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com