如何限制某些命令的输出以打印三行,等待并打印某些内容,然后打印下三行并继续执行。请注意,有时此工具会同时打印大量数据,或者有时打印速度非常慢(这是一种tail命令)。我需要使用纯bash来执行此操作,而不能使用awk。
./sometool
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
预期结果:
./sometool| <some pure bash loginc/no awk>
line1
line2
line3
#some randon text
line4
line5
line6
#some randon text
line7
line8
line9
#some randon text
line10
...
使用awk进行了修改,但需要进行bash处理:
./sometool |awk 'NR%3==0{$0= $0 RS"#some randon text"}1'
line1
line2
line3
#some randon text
line4
line5
line6
#some randon text
line7
line8
line9
#some randon text
line10
答案 0 :(得分:1)
$ seq 10 | while IFS= read -r line; do echo "$line"; if [[ $((++c%3)) -eq 0 ]]; then echo "some random text"; fi; done
1
2
3
some random text
4
5
6
some random text
7
8
9
some random text
10
创建一个模数为3的行计数器,并执行与awk
中相同的逻辑。我认为这可以简化一下。
答案 1 :(得分:1)
如何?
some process that generates output | while
IFS= read -r first
IFS= read -r second
IFS= read -r third
do
echo "$first"
echo "$second"
echo "$third"
echo "some random text"
done
对于N = 3显然是不灵活的