这下面显示了这几行csv文件,我想要得到的结果,只有得到人口列仅使用grep命令。
id,Association,Population,Variant(s),Gene(s),PubMed
1,non-significant,Dutch,HLA-B40,HLA-B,1859103
2,non-significant,Dutch,HLA-DRB5,HLA-DRB5,1859103
3,non-significant,Finnish,APOB,APOB,8018664
4,significant,Finnish,APOC3,APOC3,8018664
5,significant,Finnish,E2/E3/E4,APOE,8018664
6,significant,French,I/D,ACE,8136829
我想要的结果:
Dutch
Dutch
Finnish
Finnish
Finnish
French
我对这个问题的命令是
cat information.csv | grep -Eo '^([^,]*,){2}[^,]*'
结果如下
id,Association,Population
1,non-significant,Dutch
2,non-significant,Dutch
3,non-significant,Finnish
4,significant,Finnish
5,significant,Finnish
6,significant,French
我如何摆脱其余的东西,而不使用awk sed或任何其他东西?
###你可以使用一个带有PCRE模式的GNU grep:
grep -Po '^([^,]*,){2}\K[^,]*' file
在这里
^ -字符串的开始
([^]*){2} -除and then a以外的任意0个或多个字符出现两次
K -匹配复位操作符,丢弃到目前为止所有匹配的文本
[^]* -除逗号外的零个或多个字符。