将 less 实用程序的输出重定向到文件

ISl*_*ani 1 command-line less bash terminal

这是我所做的

less -N file1 > file2
Run Code Online (Sandbox Code Playgroud)

我想要的是使用 line-numbers 选项将 file1 写入 file2 。

但我失败了。

有什么建议可以这样做吗?为什么我做不到?

谢谢。

lcd*_*047 8

less 是错误的工作工具。

你可以使用cat:

cat -n file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者nl:

nl -ba file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者pr:

pr -n -t -T file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者sed:

sed '/./=' file1 | sed '/./N; s/\n/\t/' >file2
Run Code Online (Sandbox Code Playgroud)

或者grep:

grep -n . file1 | sed 's/:/\t/' >file2
Run Code Online (Sandbox Code Playgroud)

或者awk:

awk '{ $0 = NR "\t" $0 } 1' file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者再次awk:

awk '{ sub(/^/, NR "\t") } 1' file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者perl:

perl -pe '$_=$.."\t".$_' file1 >file2
Run Code Online (Sandbox Code Playgroud)

或者再次perl:

perl -pe 's/^/$.\t/' file1 >file2
Run Code Online (Sandbox Code Playgroud)

或seq和paste:

seq $(wc -l file1 | cut -d' ' -f1) | paste - file1 >file2
Run Code Online (Sandbox Code Playgroud)

甚至是一个普通的 shell 脚本:

count=0
while IFS= read -r line; do
    let count++
    printf '%d\t%s\n' $count "$line"
done <file1 >file2
Run Code Online (Sandbox Code Playgroud)

但是less是错误的工具。:)