私が持っている一般的な質問は、awkにフィールドセパレーターを与え、トークンの1つを変数に格納し、次にawkに別のフィールドセパレーターを与え、トークンの1つを2番目の変数に格納し、両方を出力することは可能ですか?変数値?変数は、値自体ではなく、$n 番目のトークンへの参照を格納しているようです。
私が念頭に置いていた特定の例は、多かれ少なかれ次の形式に従います: {Animal}, {species} クラス
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
変数「animal」にはカンマの左側にあるものを格納し、「class」にはその動物のクラス タイプを格納することを期待しています。つまり、MAMMAL などです。適用されるため、Peregrine Falcon などのように、名前にスペースが含まれるものではこれが機能しなくなります。
だからそれは次のようになります
Cat, MAMMAL
Dog, MAMMAL
Peregrine AVIAN