awkでgetlineとNRを使用する

awkでgetlineとNRを使用する

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 

おすすめ記事