ファイルの各行で文字列に番号を付ける方法

ファイルの各行で文字列に番号を付ける方法

file.txtが次のようになると仮定します。

line_ some text
line_ some text
line_ some text

Bashを使用してこのような行番号を付ける方法:

line_1 some text
line_2 some text
line_3 some text

これは今まで私の考えですが、うまくいきません。

#!/bin/bash
var = 1
cat ./file.txt
while read line; do           
  sed "s/line_/line_(( var++ ))/"
done < ./file.txt 

答え1

awkを使用できます。

awk '$1=$1 FNR' <file>

$1各レコードの最初の単語(この場合は行)。FNR入力レコード番号(この場合は行番号)。

このコマンドは各行を各行first wordに置き換えますfirst word + line-number

答え2

Perlでこれを行う方法は次のとおりです。

perl -pe 'print "line_$.  $_";'  [file(s)]

ファイルに送信する場合:

perl -pe 'print "line_$.  $_";'  [input_file] > [output_file]

答え3

私が見るにはあなたがここでかなりよく保護されているようですが、まさにどうでしょうか?

sed -et -e's/_ /\n/;P;=;D' <in | paste -'d_ ' - - -  >out

sedまさに数学分野の天才ではありませんが、たまに友達がチートを使ってすごく越えていきます。

これは変わります...

line_ some text
line_ some text
line_ some text

...到着...

line_1 some text
line_2 some text
line_3 some text

答え4

まあ、あなたはShell / Bashに初めて触れているようです。http://mywiki.wooledge.org/BashFAQ/001http://mywiki.wooledge.org/BashGuide/Parameters#Parameter_Expansion)

var=1
while read -r Line; do 
  printf "%s\n" "${Line/line_/line_$var}" >> ./file-new.txt
  let var++
done < ./file.txt

関連情報