假设我运行一个名为的 Python 程序test.py
,并想将其所有输出保存在一个文件中。
我们可以通过以下方式轻松实现python3 test.py > output.txt
然而,如果程序产生了一个很多行,在 bash 中减少写入文件的数据量的最有效方法是什么?
示例:保存程序输出的每隔一行,或者每一
x
行。
那么我怎样才能仅使用 bash 来完成此操作,最好是使用可以实时更新文件的方法?
编辑:-SteelDriver 的答案似乎有效。但是,有人能告诉我一个命令吗?该命令会x
按原样打印前几行,但在x
每行之后输出每y
行并将它们存储在文件中?
答案1
您可以将程序的标准输出通过另一个程序作为过滤器 - 例如从第一行开始每 10 行写入
python3 test.py | sed -n '1~10p' > output.txt
或者
python3 test.py | awk '!((NR-1)%10)' > output.txt
如果你真的只需要使用 bash,那么你可以用 shell 循环替换 sed/awk,使用计数器和条件算术表达式来选择所需的行 - 但我不推荐这样做。例如为什么使用 shell 循环来处理文本被认为是不好的做法?。