テキストファイルの各行の先頭に行番号とタブを追加するにはどうすればよいですか?
awk '{printf "%d\t%s\n", NR, $0}' < filename
Nlコマンドはこれを行うはずですが、行番号の前にもスペースが追加されます。 Linux coreutilsの一部です。
nl lines.txt
1 $bkWTN
2 $cV8$.
sed = test.txt | sed 'N;s/\n/\t/'
コマンド "sed ="は、行番号、キャリッジリターン、次の行の順に出力します。
「N; s/\ n/\ t /」という表現は、各行を取り、次の行(つまり、行番号と行)を取得し、キャリッジリターンをタブに置き換えます。
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"
cat -nは行番号を「123 linecontents」として追加し、正規表現はそれを「linenumberTABlinecontents」に変更します
Perl -pe "s/^/$.\t$_/" file.txt
または
Perl -ne "print qq($.\t$_)" file.txt
OK、これが1行のbashソリューションです。
$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=
最初のIFS設定は、bashに一度に1行ずつ読み取るように指示します。 2行目はIFSをデフォルトにリセットします。
追加のボーナスとして、それは完全にシェルで実行され、プログラムを実行しません!
いかがですか
cat -n somefile.txt
?
OK、これを行う方法を集めているので、
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
または、GNU以外のsed
sの場合:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'