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

时间:2015-03-17 14:40:16

标签: bash

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

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

hey be

将转换为

aa
za
bb

如何使用sed执行此操作?它们只包含小写字母。谢谢!

4 个答案:

答案 0 :(得分:2)

通过sed。

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

通过grep。

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

答案 1 :(得分:1)

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

awk 'length($1)==2{print $1}' file

它检查第一个字段的长度是否为2,如果是,则打印它。它并不严格遵守您对“两个字符后跟空格”的要求,但它会产生所需的输出:

aa
bA
bb

答案 2 :(得分:0)

使用grep:

grep -Eo "^..(\s|$)" filename

答案 3 :(得分:0)

这是另一个sed选项:

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