我有一个类似的文件:
<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
的行。如何使脚本自动删除?
答案 0 :(得分:2)
也许
grep -vf <(printf "%s\n" reset newitem details) filename
答案 1 :(得分:2)
最简单的是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'
答案 2 :(得分: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更容易。