gpt4 book ai didi

linux - 使用正则表达式将列与 awk 匹配

转载 作者:太空宇宙 更新时间:2023-11-04 10:11:27 24 4
gpt4 key购买 nike

我有一个 CSV 文件,其中写有记录编号、元素符号和元素名称。我想提取第二列(即元素符号)不包含字母 a、e、i、o、u、A、E、I、O、U 的那些行。 所以我写了实现相同目的的脚本,但它给了我所有的台词。

这是我的脚本:

awk -F',' '$2~/[^aeiouAEIOU]/' sample.txt

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

最佳答案

尝试

$ 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
  • !~ 在匹配时返回 false
  • $2~/[^aeiouAEIOU]/ 表示如果第二个字段包含任何非元音字符,则返回真。因此,No 将匹配,因为 N 是非元音字符
    • 这可以通过整个字符串匹配来纠正:$2~/^[^aeiouAEIOU]+$/
  • tolower($2) !~/[aeiou]/ 也可以用来代替 $2 !~/[aeiouAEIOU]/

关于linux - 使用正则表达式将列与 awk 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48848125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com