这是我所做的
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
,例如吉米建议。