web-dev-qa-db-ja.com

テキストファイルの各行に行番号とタブを追加するにはどうすればよいですか?

テキストファイルの各行の先頭に行番号とタブを追加するにはどうすればよいですか?

45
Richard Hoskins
awk '{printf "%d\t%s\n", NR, $0}' < filename
49
pgs

Nlコマンドはこれを行うはずですが、行番号の前にもスペースが追加されます。 Linux coreutilsの一部です。

nl lines.txt
 1  $bkWTN
 2  $cV8$.
55
ACoolie
sed = test.txt | sed 'N;s/\n/\t/'

コマンド "sed ="は、行番号、キャリッジリターン、次の行の順に出力します。

「N; s/\ n/\ t /」という表現は、各行を取り、次の行(つまり、行番号と行)を取得し、キャリッジリターンをタブに置き換えます。

10
Callum
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"

cat -nは行番号を「123 linecontents」として追加し、正規表現はそれを「linenumberTABlinecontents」に変更します

4
raspi
Perl -pe "s/^/$.\t$_/" file.txt

または

Perl -ne "print qq($.\t$_)" file.txt
3
itsadok

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をデフォルトにリセットします。

追加のボーナスとして、それは完全にシェルで実行され、プログラムを実行しません!

2
P. Heffner

いかがですか

cat -n somefile.txt

2
innaM

OK、これを行う方法を集めているので、

 grep -n . file.txt | sed 's/\(^[0-9]*\):/\1    /g'
 # this is a tab with Ctrl-V + Tab  =====>  ---- 
1
nik
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'

または、GNU以外のsedsの場合:

cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'
1
chaos