Bash-删除不以2个字符和空格开头的行

Bash-删除不以2个字符和空格开头的行,bash,Bash,我有一个文本文件,其中有一些我需要删除的垃圾。有些行包含2个字符和一个空格,然后是其他垃圾词。我需要编辑文件,并留下这两个字自己。比如说 aa hello how are you hey how are you doing za this is cool bb hey be 将转换为 aa za bb 如何使用sed实现这一点?它们只包括小写字母。谢谢 通过sed sed 's/^\([^ ][^ ]\)[[:blank:]].*/\1/' file 通过grep grep -oP '^

我有一个文本文件,其中有一些我需要删除的垃圾。有些行包含2个字符和一个空格,然后是其他垃圾词。我需要编辑文件,并留下这两个字自己。比如说

aa hello how are you
hey how are you doing
za this is cool
bb

hey be
将转换为

aa
za
bb
如何使用sed实现这一点?它们只包括小写字母。谢谢

通过sed

sed 's/^\([^ ][^ ]\)[[:blank:]].*/\1/' file
通过grep

grep -oP '^\S{2}(?=\s)' file

您可以使用awk执行以下操作:

awk 'length($1)==2{print $1}' file
它检查第一个字段的长度是否为2,如果是,则打印它。它没有严格遵守“两个字符后跟一个空格”的要求,但它会产生所需的输出:

aa
bA
bb
对于grep:


grep-Eo“^..(\s |$)”文件名

这里是另一个
sed
选项:

sed '/^.. /!d;s/^\(..\).*/\1/' file

但是我在
bb