Linux在线路开始时使用或操作员



我有一个CSV文件,我需要将第一列从中取出。我想拿标头(由字母组成)和仅由数字组成的数据。

样本输入:

"HEADER1","HEADER2"
"1234567","TEXT"
"3456789","TEXT2"

由于两者都封装在双引号中,我的输出应该是:

"HEADER"
"1234567"
"3456789"

我目前正在使用以下正则拨号,这仅给我数据而不是标题。我认为中间的"或"运算符包括任何文本以及由双引号封装的数字。知道为什么这不会给我我的标题?

grep -o "^"[0-9]+"|^"[A-Z]+""" test.csv > test2.csv

欢呼

问题是您已经关闭了"[A-Z]+"的报价两次:

grep -o "^"[0-9]+"|^"[A-Z]+""" test.csv > test2.csv
                                   ^^

删除它,一切都很好。为了使其更容易理解,请使用单引号:

grep -o '^"[0-9]+"|^"[A-Z]+"' test.csv > test2.csv

最后,您的正则在最后包含太多 " 。使用:

grep -o "^"[0-9]+"|^"[A-Z]+"" test.csv > test2.csv

您可以使用尴尬:

awk -F, '$1 ~ /"[0-9]+|[a-zA-Z]+"/ {print $1}' file

最新更新