Bash标准输出字符限制

5
如何限制重定向到文件的标准输出字符数量?
3个回答

8

其他方式(外部)

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/'

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

1
天啊,我总是惊讶于我对bash了解得有多少“不”知道。 - sarnold
2
@sarnold 参数扩展 似乎是不仅限于 bash 而是任何符合 POSIX 标准的 shell 中最被低估/未知的功能。我一次又一次地看到人们调用 basenamedirname,而这两个命令都可以使用参数扩展的本机 shell 语法来完成。请参见此处以获取有关用法的良好链接,以及有关 bash 的绝佳站点。 - SiegeX

0

你不能直接将其写入文件,但是你可以通过 sed 或者 head 等管道传递部分输出。或者像 @SiegeX 所说,在 shell 中捕获输出(但如果输出可能很大,我会谨慎对待)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接