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/001、http://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