我有一个列csv看起来像这样:
KFIG
KUNV
K~LK
K7RT
3VGT
某些数据点在传输中出现乱码。我只需要保留以大写字母开头的条目,然后其他三位数字可以是大写字母或数字。例如,在上面的列表中,我必须删除K~LK
和3VGT
。
我知道要删除所有可写的大写字母
sed -n '/[A-Z]\{4,\}/p'
我只想将其调整为最后三位数字可以是大写字母或数字的位置。任何帮助将不胜感激。
答案 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]
; $
表示“在行尾匹配零长度字符串”。