我有两个名为tmp1和tmp2的tmp文件,其中包含一些行。
tmp1文件,
1c\
datafile no. 23
2c\
datafile is oktmp2文件,
3c\
datafile no. 24
4c\
datafile is ok我有一个文件(名为wrong_file),我想从tmp文件中更正这些条目。
datafile no. 32
datafile is ok
datafile no. 42
datafile is ok我的输出文件(modified_file)将类似于
datafile no. 23
datafile is ok
datafile no. 24
datafile is ok 我希望使用for循环,它将运行到最后一个tmp文件,并将数据从tmp文件写入最终文件(输出),而不是手动执行。
我试过了,
sed -f tmp1 wrong_file > file1
sed -f tmp2 file1 > modified_file发布于 2015-06-12 20:29:31
我很确定你能做到:
cat ./tmp[12] | sed -f - ./wrong_file >outfile至少,如果sed的S脚本指令都是针对行号的,那么这不会引起任何问题。没有必要单独应用这些脚本--您可以将它们全部链接在一起,同时运行脚本。
然而,你必须这样做,这是重复工作的表现。这里是一个sed脚本的副本,它将避免首先编写任何这些诱惑文件,只需扫描需要更改的行的输入,然后将流中的所有脚本一次传递到最终的sed:
{ sed '/^#\.tid\.setnr/!d;=;g;G' |
paste -d'c\\\n' - - - ./addfile
} <./mainfile | sed -f - ./mainfile它的输出与这里的示例数据不一样,因为它是根据您在其他问题中提供的示例量身定做的。但它完全避免了编写修改脚本,并将所有编辑命令发送到可以立即采取行动的sed进程。
通常,您可以考虑到,sed进程也准备好了处理其脚本输入的所有方式,同时也准备好处理其编辑内容输入。
https://unix.stackexchange.com/questions/209321
复制相似问题