在文件中的每一行之后添加额外的行

时间:2013-06-27 08:01:33

标签: python sed awk

在文件中的每一行之后添加额外的行

我需要大约1000行文件的以下任务的帮助。

INPUT

    ./create.pl     1eaj.out
    ./create.pl     1ezg.out
    ./create.pl     1f41.out
    ...

输出

    ./create.pl     1eaj.out
    mv complex.* 1eaj
    ./create.pl     1ezg.out
    mv complex.* 1ezg
    ./create.pl     1f41.out
    mv complex.* 1f41
    ...

我知道以下命令可以添加新行和第一部分,使得输出如下所示。

    awk ' {print;} NR % 1 == 0 { print "mv complex.*  "; }'

    ./create.pl     1eaj.out
    mv complex.* 
    ./create.pl     1ezg.out
    mv complex.* 
    ./create.pl     1f41.out
    mv complex.* 
    ...

如何休息? 非常感谢。

3 个答案:

答案 0 :(得分:3)

我的尝试:

sed -n 's/^\(\.\/create\.pl\)\s*\(.*\)\.out$/\1 \2.out\nmv complex.* \2/p' s.txt

或在&&./create.pl之间使用mv(因为只有在正确执行./create.pl时才需要mv):

sed -n 's/^\(\.\/create\.pl\)\s*\(.*\)\.out$/\1 \2.out \&\& mv complex.* \2/p' s.txt

给出:

./create.pl 1eaj.out && mv complex.* 1eaj
./create.pl 1ezg.out && mv complex.* 1ezg
./create.pl 1f41.out && mv complex.* 1f41

答案 1 :(得分:3)

你快到了那里:

$ awk '{print $1, $2, "\nmv complex.*", $2}' file
./create.pl 1eaj.out 
mv complex.* 1eaj.out
./create.pl 1ezg.out 
mv complex.* 1ezg.out
./create.pl 1f41.out 
mv complex.* 1f41.out

答案 2 :(得分:2)

使用空格或圆点作为分隔符来提取所需的单词:

awk -F '[[:blank:].]+' '{print; print "mv complex.*", $4}' filename