在文件中的每一行之后添加额外的行
我需要大约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.*
...
如何休息? 非常感谢。
答案 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