name_list.txtファイルの各行を印刷するためにawkスクリプトを呼び出すbashスクリプトがあります。
#!/bin/bash
awk -f parse_list.awk name_list.txt
awkスクリプトでは、getlineとNRを使用して、次のように各レコードを印刷します。
#!/usr/bin/awk
BEGIN {
line = ""
}
NR != 0 {
print NR
getline line
print line
}
name_list.txt が次のようになるとします。
aaaaaaaaaaa
bbbbbbbbbb
cccccccccc
ddddddddddd
eeeeeeeee
ffffffffff
gggggggg
このスクリプトを実行すると、name_list.txtの内容が行番号とともにコンソールに印刷されると予想されますが、実行するとgetlineおよび/またはprintが1行をスキップするため、出力は常にです。
1
bbbbbbbbbb
3
ddddddddddd
5
ffffffffff
7
ffffffffff
私がNRとgetlineを正しく使用していることを誰でも教えてもらえますか?シェルスクリプトとawkスクリプトが必要ですが、それらを組み合わせたくありません。誰でも助けることができますか?
答え1
getline
読むNextワイヤー。あなたはそれを使用する必要はありません。現在の行はすでに次の場所にあります$0
。
awk '{print NR, $0}' name_list.txt
答え2
getline は次の入力行を取得します。マンページから -
getline var Set var from next input record; set NR, FNR.