![排除 unix 文本文件中具有特定小写字符的所有行](https://linux22.com/image/10281/%E6%8E%92%E9%99%A4%20unix%20%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E4%B8%AD%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E5%B0%8F%E5%86%99%E5%AD%97%E7%AC%A6%E7%9A%84%E6%89%80%E6%9C%89%E8%A1%8C.png)
我有一个文本文件,其中包含下/上字符的组合。我想删除出现任何特定小写字母的行。
文本文件内容:
aASDF1234qwerty;lkJHG
fdsaAghiyirchgdadgqa2
任务 - 删除出现任何小写字符“a”、“e”、“j”、“k”的所有行。
我尝试了下面的选项来获取仅找到大写字母的所有行,但它没有按预期工作。grep -wo '[[:alnum:]]*A*E*J*K*[[:alnum:]]*' test.txt
答案1
使用grep
:
grep -v '[aejk]' /path/to/file
使用awk
:
awk '! /[aejk]/ { print }' /path/to/file
使用sed
:
sed '/[aejk]/d' /path/to/file
所有这些示例中使用的正则表达式/[aejk]/
, 可以音译为“以下任意字符:a
, e
, j
, 或k
”。grep
和调用awk
返回任何符合以下条件的行不是匹配该表达式;调用sed
具有相同的最终结果,但工作原理是省略从解析的文件中的任何行做匹配。