我想要一种通用的方式来显示 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
, wheresed
的d
命令删除所有匹配的内容^[[: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