awk/sed: テキスト範囲に行番号を追加

awk/sed: テキスト範囲に行番号を追加

だから私は範囲を持っています。 2-4だとしましょう。 3行あります。

first
second
third

私の出力は次のようになります。

2 first
3 second
4 third

私はこれをBSD(Mac)awk / sedで試していますが、これがより難しくなるようです。

答え1

nl非常にフィット:

nl -v2 -p -ba

計算は 2( ) から始まり-v2、ページ変更を無視し( -p) すべての行に番号を付けます( -ba)。

答え2

フロント:

awk '{printf("%s %s\n", FNR+1, $0)}' file

パラメータを渡したい場合:

awk -vn=2 '{printf "%s %s\n", n++, $0}' <file

ファイルが範囲より長い場合にのみ範囲を作成したい場合:

awk -v s=2 -v e=4 'BEGIN{for(n=s;n<=e;n++)print n}' | paste -d' ' - file

答え3

純粋なbashスクリプトを使用しますか?

i=2; cat output.txt | while IFS= read -r line; do
    echo "$i $line"
    i=$((i+1))
done

関連情報