Linux 根据每行的大小,在每行的开头添加前缀

Linux 根据每行的大小,在每行的开头添加前缀,linux,scripting,Linux,Scripting,我有一个包含邮政编码和城市名称的文件,如下所示: 1234 foo 4321 foobar 64324 foofoobar 92001 bar 数字和城市名称之间有一个\t。我想使用sed或shell脚本将前缀0添加到每行4个数字中 01234 foo 04321 foobar 64324 foofoobar 92001 bar 感谢您的帮助。假设所有邮政编码都是数字的,您可以根据以下文字记录使用awk中的printf命令执行任务(此处的v字符仅用于显示选项卡停止的位置): awk命令首

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

1234  foo
4321  foobar
64324 foofoobar
92001 bar
数字和城市名称之间有一个\t。我想使用sed或shell脚本将前缀0添加到每行4个数字中

01234 foo
04321 foobar
64324 foofoobar
92001 bar

感谢您的帮助。

假设所有邮政编码都是数字的,您可以根据以下文字记录使用
awk
中的
printf
命令执行任务(此处的
v
字符仅用于显示选项卡停止的位置):

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

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


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

sed 's/^\(....\)$/0\1/' filename

(但我认为paxdiablo的答案更清晰。)

很抱歉,我完全忘记了我的文件在邮政编码后有城市名称。。。我正在编辑这篇文章。@prefsk,没问题,我已经更新了答案,以纳入您更改的需求。
sed 's/^\(....\)$/0\1/' filename