我需要删除所有包含" [' @ everyone']"使用sed,grep或awk。
示例:
USER: user1 - (327287311424072921) - No - ['@everyone']
USER: user2 - (323639467155241152) - No - ['@everyone']
USER: user3 - (213739640403696966) - No - ['@everyone', 'OK']
USER: user4 - (211732640103626928) - No - ['@everyone', 'Group1']
期望的结果:
USER: user3 - (213739640403696966) - No - ['@everyone', 'OK']
USER: user4 - (211732640103626928) - No - ['@everyone', 'Group1']
提前致谢!
答案 0 :(得分:3)
我认为带有grep
-F
选项的-v
应该是最佳选择。你不在乎那些逃脱......
grep -vF "['@everyone']" file
阅读man grep
获取信息,' -F / -v'的意思。
答案 1 :(得分:0)
您只需使用grep执行此操作并取消结果即可。我不知道你是否需要将它管道输入grep或者你有文件。所以这两个版本。
cat file.txt|grep -v "\['@everyone'\]"
或
grep -v "\['@everyone'\]" test.txt
答案 2 :(得分:0)
awk 方法:
awk '!/\[\047@everyone\047\]/' file
输出:
USER: user3 - (213739640403696966) - No - ['@everyone', 'OK']
USER: user4 - (211732640103626928) - No - ['@everyone', 'Group1']
答案 3 :(得分:-1)
awk 'NF>8' file
USER: user3 - (213739640403696966) - No - ['@everyone', 'OK']
USER: user4 - (211732640103626928) - No - ['@everyone', 'Group1']
据我所知,这里的要点是摆脱界限 包含[' @ everyone']但这并不意味着我必须指出它。 那么我必须得到单引号及其复杂情况。
这就是为什么我做了我的第一个提案,另一种方式是:
awk '!/user1|user2/' file
但如果有人坚持要包含[' @ everyone'],你可以这样说:
awk '$8=="[\47@everyone\47,"' file
or
awk '$8 ~/\[\47@everyone\47,/' file
两者都是单引号,后者甚至是括号。