将 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

或者甚至是一个简单的 shell 脚本:

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,例如吉米建议。

相关内容