如何将cat与sed命令合并为单条操作?无需&&或;
当然可以合并!
其实你完全不需要依赖cat命令——sed本身就支持直接读取并处理文件内容,这也是Unix/Linux工具链里很实用的小技巧,还能避免创建不必要的进程。
举个例子,如果你之前的命令是这样的:
cat mytargetfile.txt | sed 's/foo/bar/g'
直接改成下面这样就可以了,完全不用管道、&&或者分号:
sed 's/foo/bar/g' mytargetfile.txt
为什么这能行?
sed作为流编辑器,设计时就支持把文件名作为参数传入,它会自动打开文件、读取内容并执行你指定的编辑操作,根本不需要cat来帮忙输出文件内容再通过管道传递。这种写法不仅更简洁,效率也更高(少启动一个cat进程)。
如果需要处理多个文件,也一样简单:
sed 's/foo/bar/g' file1.txt file2.txt file3.txt
sed会逐个处理每个文件的内容。
你之前尝试合并没成功,大概率是没意识到sed本身就有直接操作文件的能力——很多人刚开始用管道的时候都会习惯用cat开头,但其实这类文本处理工具几乎都支持直接读取文件,这也是避免“无意义的cat使用”(useless use of cat)的常见优化方式。
内容的提问来源于stack exchange,提问作者Arcticooling
相关产品推荐
相关产品推荐

