在unix [使用awk或sed]的文件中的任何位置添加一列

Man*_*nde 5 unix shell awk sed

我正在为以下命令寻找其他替代方案/更智能的1个衬管,它应该为所请求的列号添加一个值.我尝试按照以下sed命令正常工作,将值4添加到第4列.[需要:因为我有这样的文件,其中包含1000条记录,很多次我需要在任何位置添加一列.]我的approch仅适用于较小规模.

cat 1.txt

1|2|3|5
1|2|3|5
1|2|3|5
1|2|3|5
Run Code Online (Sandbox Code Playgroud)

sed -i 's/1|2|3|/1|2|3|4|/g' 1.txt

cat 1.txt

1|2|3|4|5
1|2|3|4|5
1|2|3|4|5
1|2|3|4|5
Run Code Online (Sandbox Code Playgroud)

thansk提前.

Bir*_*rei 7

一种方式使用awk.将两个参数传递给脚本,列号和要插入的值.该脚本增加了字段数(NF)并遍历最后一个字段,直到指示的位置并在那里插入新值.

运行此命令:

awk -v column=4 -v value="four" '
    BEGIN {
        FS = OFS = "|";
    }
    {
        for ( i = NF + 1; i > column; i-- ) {
            $i = $(i-1);
        }
        $i = value;
        print $0;
    }
' 1.txt
Run Code Online (Sandbox Code Playgroud)

输出如下:

1|2|3|four|5
1|2|3|four|5
1|2|3|four|5
1|2|3|four|5
Run Code Online (Sandbox Code Playgroud)