Bash 标准输出字符限制

发布于 2024-10-28 01:27:58 字数 26 浏览 3 评论 0原文

如何限制重定向到文件的标准输出字符数?

How can you limit the count of standard output characters that is redirected to file?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝天白云 2024-11-04 01:27:58

其他方式(外部)

echo $out| head -c 20
echo $out | awk '{print substr($0,1,20) }'
echo $out | ruby -e 'print $_[0,19]'
echo $out | sed -r 's/(^.{20})(.*)/\1/'

Other ways (external)

echo $out| head -c 20
echo $out | awk '{print substr($0,1,20) }'
echo $out | ruby -e 'print $_[0,19]'
echo $out | sed -r 's/(^.{20})(.*)/\1/'

您可以使用命令替换来包装输出预重定向,然后使用偏移量参数扩展来限制字符数,如下所示:

#!/bin/bash

limit=20

out=$(echo "this line has more than twenty characters in it")
echo ${out::limit} > /path/to/file

概念证明

$ limit=20
$ out=$(echo "this line has more than twenty characters in it").
$ echo ${out::limit}
this line has more t

You could use Command Substitution to wrap the output pre-redirection, then use the offset Parameter Expansion to limit the number of characters like so:

#!/bin/bash

limit=20

out=$(echo "this line has more than twenty characters in it")
echo ${out::limit} > /path/to/file

Proof of Concept

$ limit=20
$ out=$(echo "this line has more than twenty characters in it").
$ echo ${out::limit}
this line has more t
撩人痒 2024-11-04 01:27:58

您不能直接在文件中执行此操作,但可以通过 sed 或 head 等进行管道传输,仅传递部分内容输出。或者正如 @SiegeX 所说,捕获 shell 中的输出(但如果输出可能很大,我会对此保持警惕)。

You can't do so directly into a file, but you can pipe through sed or head, etc. to pass on only part of the output. Or as @SiegeX says, capture the output in the shell (but I would be wary of that if the output mis likely to be large).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文