显示 grepFile 中所有不以字母开头的行

显示 grepFile 中所有不以字母开头的行

我想要一种通用的方式来显示 grepFile 中不以字母开头的所有行。

答案1

足够简单:grep -v '^[[:alpha:]]' testfile

与这样的测试文件:

$ cat testfile 
sfdsaf
1sdflad
 asfd
,asdfasdf
safdaf

上述命令将返回:

$ grep -v '^[[:alpha:]]' testfile 
1sdflad
 asfd
,asdfasdf

为什么?

  • ^grep 一行的开头
  • [[:alpha:]]grep 查找 1 个字母
  • -v反转匹配

替代将使用sed '/^[[:alpha:]]/d' testfile, wheresedd命令删除所有匹配的内容^[[:alpha:]]-- 这又是行开头的字母。

另一种选择awk '/^[^a-zA-Z]/ { print $0 }' testfile

答案2

只需使用 grep 中的正则表达式选项并反转查找字母作为第一个字符的输出:

$ cat file.txt

asd
Ajnjn
bdfadsf
Bkkkknm
csdgadga
4gafga
dfsdf
esdfasdg
2fsefse
~asdasd
 dfdfsd
fartaherh
3adsfasdf

$ grep -ve '^[a-zA-Z]' file.txt

4gafga
2fsefse
~asdasd
 dfdfsd
3adsfasdf

答案3

您也可以尝试使用以下命令

命令1:

sed -n '/^[a-zA-Z]/!p'  testfile

命令2:

awk '$0 !~ /^[a-zA-Z]/{print $0}' testfile

相关内容