我有一个带有句子的文本文件,每行都有单词。例如。
Hello
Hi
How are you?
%
$
9
我需要从上面的文件中删除包含非文本字符的行。我的输出应如下:
Hello
Hi
我正在尝试使用awk命令,如下所示:
awk '!/[%$0-9?]/' filename
我可以为上述文件执行此操作,因为我知道上面句子中的特殊字符。但是,我的文件有一个很难用awk写的特殊字符列表。
我尝试了以下命令,但它保留了包含字母和特殊字符的行。
awk '/[a-zA-Z]/' filename
因此,有人可以建议我如何编写awk命令,只保留那些没有任何特殊字符的行或如何只保留那些只有字母的行。
由于
答案 0 :(得分:0)
awk '/^[a-zA-Z[:space:]]+$/' yourfile
请注意$
用法。
答案 1 :(得分:0)
grep
是工作的正确工具
您可以强制C
区域设置并报告包含[A-Za-z]
范围之外字符的行
LC_ALL=C grep -v '[^[:alpha:]]' file
使用GNU grep
,您可能必须通过-a
强制它输出行,即使文件看起来是二进制
LC_ALL=C grep -a -v '[^[:alpha:]]' file