less ユーティリティの出力をファイルにリダイレクトする

less ユーティリティの出力をファイルにリダイレクトする

これは私がしたことです。

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

または:seqpaste

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次のとおりです。プレハブ牛革提案。

関連情報