有没有办法在 while 循环中使用 less 命令?
Is there a way to use the less command in a while loop?
我有一个 while 循环,它接受一个输入并为每个条目创建一个 printf。这个文件真的很大,打印出来要花很长时间。有没有一种方法可以将结果保存到文件中并使用 less
使其成为分页输出?
while read line
do
id=$(cut -d' ' -f1 <<< $line)
ip=$(cut -d' ' -f2 <<< $line)
mon=$(cut -d' ' -f3 <<< $line)
day=$(cut -d' ' -f4 <<< $line)
printf "%s 45%s (%s %s)\n" "$id" "$ip" "$mon" "$day"
done <<< "$inputFile"
我试过了
result+=$("%s 45%s (%s %s)\n" "$id" "$ip" "$mon" "$day")
然后只是做
less "$result"
在循环之外,但这没有用,我不知道从这里到哪里去。
*nix 就是流媒体工具。一个工具流向另一个工具。如果你想看你的脚本 运行 少用你可以 'pipe' 它...
将您的脚本写入文件 - 我们将其称为“my.script.sh”,使其可执行“chmod +x my.script.sh”然后使用 | (管道)运算符...
./my.script.sh | less
正如 Gordon 所说,这是很多毫无意义的工作,尤其是当文件很大时。另外 <<< "$inputFile"
意味着您所说的文件的 整个文本 已经读入 inputFile
变量,这似乎毫无意义并且适得其反,除非有一些特定的原因?
试试这样的 -
awk '{printf "%s 45%s (%s %s)\n", , , , }' file.in | less
或者如果您希望将输出保存在文件中并分页到屏幕,
awk '{ printf "%s 45%s (%s %s)\n", , , , }' file.in | tee out.txt | less
我也同意克林特的观点。分页可能应该是分开的 - 但由于我还没有看到整个结构,尝试一些看看有什么用。
我有一个 while 循环,它接受一个输入并为每个条目创建一个 printf。这个文件真的很大,打印出来要花很长时间。有没有一种方法可以将结果保存到文件中并使用 less
使其成为分页输出?
while read line
do
id=$(cut -d' ' -f1 <<< $line)
ip=$(cut -d' ' -f2 <<< $line)
mon=$(cut -d' ' -f3 <<< $line)
day=$(cut -d' ' -f4 <<< $line)
printf "%s 45%s (%s %s)\n" "$id" "$ip" "$mon" "$day"
done <<< "$inputFile"
我试过了
result+=$("%s 45%s (%s %s)\n" "$id" "$ip" "$mon" "$day")
然后只是做
less "$result"
在循环之外,但这没有用,我不知道从这里到哪里去。
*nix 就是流媒体工具。一个工具流向另一个工具。如果你想看你的脚本 运行 少用你可以 'pipe' 它...
将您的脚本写入文件 - 我们将其称为“my.script.sh”,使其可执行“chmod +x my.script.sh”然后使用 | (管道)运算符...
./my.script.sh | less
正如 Gordon 所说,这是很多毫无意义的工作,尤其是当文件很大时。另外 <<< "$inputFile"
意味着您所说的文件的 整个文本 已经读入 inputFile
变量,这似乎毫无意义并且适得其反,除非有一些特定的原因?
试试这样的 -
awk '{printf "%s 45%s (%s %s)\n", , , , }' file.in | less
或者如果您希望将输出保存在文件中并分页到屏幕,
awk '{ printf "%s 45%s (%s %s)\n", , , , }' file.in | tee out.txt | less
我也同意克林特的观点。分页可能应该是分开的 - 但由于我还没有看到整个结构,尝试一些看看有什么用。