首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用for循环将数据逐个从tmp文件写入最终输出文件?

如何使用for循环将数据逐个从tmp文件写入最终输出文件?
EN

Unix & Linux用户
提问于 2015-06-12 20:19:22
回答 1查看 623关注 0票数 1

我有两个名为tmp1tmp2的tmp文件,其中包含一些行。

tmp1文件,

代码语言:javascript
复制
1c\  
datafile no. 23  
2c\  
datafile is ok

tmp2文件,

代码语言:javascript
复制
3c\  
datafile no. 24  
4c\  
datafile is ok

我有一个文件(名为wrong_file),我想从tmp文件中更正这些条目。

代码语言:javascript
复制
datafile no. 32  
datafile is ok  
datafile no. 42  
datafile is ok

我的输出文件(modified_file)将类似于

代码语言:javascript
复制
datafile no. 23  
datafile is ok  
datafile no. 24  
datafile is ok    

我希望使用for循环,它将运行到最后一个tmp文件,并将数据从tmp文件写入最终文件(输出),而不是手动执行。

我试过了,

代码语言:javascript
复制
sed -f tmp1 wrong_file > file1  
sed -f tmp2 file1 > modified_file
EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-06-12 20:29:31

我很确定你能做到:

代码语言:javascript
复制
cat ./tmp[12] | sed -f - ./wrong_file >outfile

至少,如果sed的S脚本指令都是针对行号的,那么这不会引起任何问题。没有必要单独应用这些脚本--您可以将它们全部链接在一起,同时运行脚本。

然而,你必须这样做,这是重复工作的表现。这里是一个sed脚本的副本,它将避免首先编写任何这些诱惑文件,只需扫描需要更改的行的输入,然后将流中的所有脚本一次传递到最终的sed

代码语言:javascript
复制
{   sed '/^#\.tid\.setnr/!d;=;g;G' |
    paste  -d'c\\\n' - - - ./addfile
}   <./mainfile | sed -f - ./mainfile

它的输出与这里的示例数据不一样,因为它是根据您在其他问题中提供的示例量身定做的。但它完全避免了编写修改脚本,并将所有编辑命令发送到可以立即采取行动的sed进程。

通常,您可以考虑到,sed进程也准备好了处理其脚本输入的所有方式,同时也准备好处理其编辑内容输入。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/209321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档