![将 less 实用程序的输出重定向到文件](https://linux22.com/image/69341/%E5%B0%86%20less%20%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E8%BE%93%E5%87%BA%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E6%96%87%E4%BB%B6.png)
这是我所做的
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
或者甚至是一个简单的 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
,例如吉米建议。