これは私がしたことです。
less -N file1 > file2
私が望むのは、行番号オプションを使用してファイル1をファイル2に書き込むことです。
しかし、私は失敗しました。
このタスクに関する提案はありますか?私はなぜそれを行うことができませんでしたか?
ありがとうございます。
答え1
less
作業に適したツールではありません。
次の目的で使用できますcat
。
cat -n file1 >file2
またはnl
:
nl -ba file1 >file2
またはpr
:
pr -n -t -T file1 >file2
またはsed
:
sed '/./=' file1 | sed '/./N; s/\n/\t/' >file2
またはgrep
:
grep -n . file1 | sed 's/:/\t/' >file2
またはawk
:
awk '{ $0 = NR "\t" $0 } 1' file1 >file2
または再びawk
:
awk '{ sub(/^/, NR "\t") } 1' file1 >file2
またはperl
:
perl -pe '$_=$.."\t".$_' file1 >file2
または再びperl
:
perl -pe 's/^/$.\t/' file1 >file2
または:seq
paste
seq $(wc -l file1 | cut -d' ' -f1) | paste - file1 >file2
または簡単なシェルスクリプトも可能です:
count=0
while IFS= read -r line; do
let count++
printf '%d\t%s\n' $count "$line"
done <file1 >file2
しかし、これはless
間違ったツールです。 :)
答え2
最初の推測(確認するにはソースコードを詳しく調べる必要があります)less
はユーザーインターフェイスツールです。つまり、端末の動作を変更します。less
軽いシェルと同じであることがわかります(たとえば、/
検索のための内部コマンドがあります)。表示されるコンテンツはリダイレクトされない可能性があります。名前が示すようにいいえ[標準]出力。
必要な作業に適したツールはnl
次のとおりです。プレハブ牛革提案。