[英]matching a column with awk using regex
I have a CSV file in which record number, element symbol and element name is written. 我有一个CSV文件,其中记录了记录号,元素符号和元素名称。 I want to extract those lines in which second column (ie element symbol) does not contain the letters a,e,i,o,u,A,E,I,O,U.
我想提取其中第二列(即元素符号) does not contain the letters a,e,i,o,u,A,E,I,O,U.
So I wrote a script to achieve the same but it is giving me all the lines. 所以我写了一个脚本来达到相同的目的,但是它给了我所有的思路。
This is my script: 这是我的脚本:
awk -F',' '$2~/[^aeiouAEIOU]/' sample.txt
The sample.txt file: sample.txt文件:
102,No,Nobelium
103,Lr,Lawrencium
104,Rf,Rutherfordium
105,Db,Dubnium
106,Sg,Seaborgium
107,Bh,Bohrium
108,Hs,Hassium
109,Mt,Meitnerium
110,Ds,Darmstadtium
111,Rg,Roentgenium
112,Cn,Copernicium
113,Nh,Nihonium
114,Fl,Flerovium
115,Mc,Moscovium
116,Lv,Livermorium
117,Ts,Tennessine
118,Og,Oganesson
Try 尝试
$ awk -F',' '$2!~/[aeiouAEIOU]/' sample.txt
103,Lr,Lawrencium
104,Rf,Rutherfordium
105,Db,Dubnium
106,Sg,Seaborgium
107,Bh,Bohrium
108,Hs,Hassium
109,Mt,Meitnerium
110,Ds,Darmstadtium
111,Rg,Roentgenium
112,Cn,Copernicium
113,Nh,Nihonium
114,Fl,Flerovium
115,Mc,Moscovium
116,Lv,Livermorium
117,Ts,Tennessine
!~
to return false on a match !~
在比赛中返回假 $2~/[^aeiouAEIOU]/
means return true if second field contains any non-vowel character.. so, No
will match because N
is non-vowel character $2~/[^aeiouAEIOU]/
表示如果第二个字段包含任何非元音字符,则返回true。.因此, No
将匹配,因为N
是非元音字符
$2~/^[^aeiouAEIOU]+$/
这可以通过整个字符串匹配来纠正: $2~/^[^aeiouAEIOU]+$/
tolower($2) !~ /[aeiou]/
can also be used instead of $2 !~ /[aeiouAEIOU]/
也可以使用tolower($2) !~ /[aeiou]/
代替$2 !~ /[aeiouAEIOU]/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.