我想我的一般问题是,是否可以给 awk 一个字段分隔符,将其中一个标记存储在一个变量中,然后给 awk 另一个字段分隔符,并将其中一个标记存储在第二个变量中,然后打印出来变量值?似乎变量存储了对 $nth 标记的引用,而不是值本身。
我想到的具体例子或多或少遵循这种形式:{Animal}, {species} class
Cat, Felis catus MAMMAL
Dog, Canis lupus familiaris MAMMAL
Peregrine Falcon, Falco peregrinus AVIAN
...
并且您希望它输出如下内容:
Cat MAMMAL
Dog MAMMAL
Peregrine Falcon AVIAN
...
你想要的是符合以下形式的东西:{Animal} 类
用 {} 括起来的东西意味着它可以有任意数量的空格。
我最初的想法是我会有这样的事情:
cat test.txt | awk '{FS=","}; {animal=$1}; {FS=" "}; {class=$NF}; {print animal, class}; > animals.txt
我希望变量“动物”存储逗号左侧的内容,而“类”具有该动物的类类型,例如 MAMMAL 等。但最终发生的是只有最后使用的字段分隔符是已应用,因此对于名称中包含空格的事物(例如 Peregrine Falcon 等),这将中断。
所以它看起来像
Cat, MAMMAL
Dog, MAMMAL
Peregrine AVIAN