我有一个csv文件,其中一些元素在传输时出现乱码。有效标识符恰好是四个大写字母,例如KFIG
。偶尔我会得到一个标识符,如a~K%
或其他一些这样的废话。如何使用sed
删除这些案例?
我尝试了sed 's/[^A-Z]*//g'
但是这仍然会让我在例如我给出的乱码示例中使用单K
。如何将命令恰好应用于四个字母?
例如,这是我在文件中的一部分:
)---
*TAR
+FHU
+FWA
+RQE
0KJS
ENOL
ENOV
以上只有两个有效标识符是ENOL
和ENOV
。我只是想删除其他人。
答案 0 :(得分:2)
要删除包含错误标识符的行,请使用:
sed -n '/[A-Z]\{4,\}/p'
说明:
sed
通常在评估所有表达式后打印每一行。 -n
选项会抑制此行为,因此我们必须显式打印该行(使用p
指令); \{4,\}
表示"前一个原子发生四次或更多次",前一个原子为[A-Z]
;