繁体   English   中英

将xargs与awk配合使用就地修改文件(在Mac上!)

[英]Using xargs with awk to modify files in-place (on a Mac!)

我一直在尝试从Mac上的文本文件中删除所有带有“小猫”一词的行。 我一直在使用find与xargs来执行此操作,但是它不起作用。 以前,我尝试将sed与就地修改选项一起使用,但无济于事。 如何使用awk命令替换每个文件?

gfind -iname "dogs_kittens.txt" -type f -print0 | xargs -0 -0 -I %in <awk '!/kittens/{print}' %in > %in

如果您愿意再次尝试sed ,它应该很简单:

gfind -iname "dogs_kittens.txt" -type f -execdir sed -i .meow '/kittens/d' {} +

我不确定为什么要使用gfind,因为仅sed就足够了:

sed -i '' '/kittens/d' dogs_kittens.txt

在OS X上,就地编辑要求您将其与-i(space)''以覆盖输入文件。

如果可以使用最新版本的GNU awk,则可以使用-i inplace选项。

我认为类似这样的方法比较合适:

awk '!/kittens/' dogs_kittens.txt > tmp && mv tmp dogs_kittens.txt

对于不匹配/kittens/每一行,执行默认操作,即打印该行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM