使用sed消除所有与所需形式不匹配的行

时间:2015-07-21 18:49:09

标签: sed

我有一个列csv看起来像这样:

KFIG
KUNV
K~LK
K7RT
3VGT

某些数据点在传输中出现乱码。我只需要保留以大写字母开头的条目,然后其他三位数字可以是大写字母或数字。例如,在上面的列表中,我必须删除K~LK3VGT

我知道要删除所有可写的大写字母

sed -n '/[A-Z]\{4,\}/p'

我只想将其调整为最后三位数字可以是大写字母或数字的位置。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

只需使用:

sed -n '/[A-Z][A-Z0-9]\{3,\}/p'

但是,如果这些标识符实际上是文件中的所有标识符,我会提出以下命令(它将确保整行匹配,因此它将拒绝例如超过4个字符长的标识符):< / p>

sed -n '/^[A-Z][A-Z0-9]\{3\}$/p'
  • ^表示“匹配行首的零长度字符串”;
  • \{3\}表示“恰好匹配前一个原子的3个出现位置”,前一个原子为[A-Z0-9];
  • $表示“在行尾匹配零长度字符串”。