在Unix中为每个记录添加一个字符到文件的特定位置

时间:2013-12-17 12:32:08

标签: unix sed awk

我有一个固定宽度的文件,我想为每个记录添加一个特定的字符到文件的特定位置。与文件一起使用意味着我的列没有用任何分隔符分隔。每个列都有一个特定的宽度分配给它。 假设我有以下文件:

129876   Amit     h-no-344    Gurgaon   
687      Rahul    h-no-2798   Bangalore   
5789     Soumyajith-no-33467  Hyderabad

我想在第19个位置添加两个空白字符(例如:""),这样每个记录的长度现在将增加2个。

2 个答案:

答案 0 :(得分:4)

sed -r 's/.{18}/&  /' file

答案 1 :(得分:0)

您可以使用:

$ awk 'BEGIN{FS=OFS=""} {$19="  "$19} 1' file
129876   Amit       h-no-344    Gurgaon   
687      Rahul      h-no-2798   Bangalore   
5789     Soumyajit  h-no-33467  Hyderabad

通过设置BEGIN{FS=OFS=""},每第n个字段都是第n个字符。因此,19可以用{$19=" "$19}代替。然后1被评估为真,因此执行{print $0},打印该行。