繁体   English   中英

如何从文件中删除包含字符串数组中任何一个的行?

[英]How to remove lines containing any one of an array of strings from a file?

我有一个类似的文件:

<string name="app_name">多系统启动免费版</string>
<string name="newitem">新建</string>
<string name="edit">编辑</string>
<string name="edits">编辑\u0020</string>
<string name="details">详情</string>
<string name="resize">改变大小</string>
<string name="seticon">设置图标</string>
<string name="delete">"删除 \u0020"</string>
<string name="reset">恢复出厂设置</string>
<string name="setdefault">设为默认</string>
<string name="description">多系统启动免费版</string>
<string name="nodata">没有发现虚拟系统镜像!!!</string>

我想从中删除包含reset newitem details行。 如何制作脚本以自动删除这些脚本?

也许

grep -vf <(printf "%s\n" reset newitem details) filename

如前所述,最简单的方法是grep -v -e reset -e newitem -e details 但是,对于踢,这是sed:

sed '/reset/d;/newitem/d;/details/d'
sed '/reset\|newitem\|details/d'

和awk:

awk '!/reset|newitem|details/'
awk '!/reset/ && !/newitem/ && !/details/'
awk '/reset/ || /newitem/ || /details/ { next } 1'

如果要删除字符串中任何地方出现“重设”,“新项目”或“详细信息”的行,则可以轻松地将一些grep -v语句链接在一起:

prompt:~/> cat file.txt | grep -v reset | grep -v newitem | grep -v details
<string name="app_name">多系统启动免费版</string>
<string name="edit">编辑</string>
<string name="edits">编辑\u0020</string>
<string name="resize">改变大小</string>
<string name="seticon">设置图标</string>
<string name="delete">"删除 \u0020"</string>
<string name="setdefault">设为默认</string>
<string name="description">多系统启动免费版</string>
<string name="nodata">没有发现虚拟系统镜像!!!</string>

-v搜索通常会返回的grep的倒数 对于像这样的简单情况,我认为这种方法比sed或awk容易。

暂无
暂无

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

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