我有一个csv文件,我需要将第一列拉出来。我想采用标题(由字母组成)和仅由数字组成的数据。
示例输入:
"HEADER1","HEADER2"
"1234567","TEXT"
"3456789","TEXT2"
由于两者都封装在双引号内,我的输出应为:
"HEADER"
"1234567"
"3456789"
我目前正在使用以下正则表达式,它只给我数据而不是标题。我认为中间的'OR'运算符将包含任何文本以及用双引号封装的数字。知道为什么这不给我标题吗?
grep -o "^\"[0-9]\+\"\|^\"[A-Z]\+\"\"" test.csv > test2.csv
干杯
答案 0 :(得分:2)
问题在于您已关闭"[A-Z]\+"
两次的报价:
grep -o "^\"[0-9]\+\"\|^\"[A-Z]\+\"\"" test.csv > test2.csv
^^
删除它,一切都很好。为了便于理解,请使用单引号:
grep -o '^"[0-9]\+"\|^"[A-Z]\+"' test.csv > test2.csv
答案 1 :(得分:1)
你的正则表达式包含太多 \“。 使用:
grep -o "^\"[0-9]\+\"\|^\"[A-Z]\+\"" test.csv > test2.csv
答案 2 :(得分:0)
您可以使用awk:
awk -F, '$1 ~ /"[0-9]+|[a-zA-Z]+"/ {print $1}' file