我的grep输出,应该在后面的每一行中以缩进增量的方式显示一行。
grep命令输出为:

发布于 2021-09-30 20:51:24
使用GNU awk,我们可以输出每一行输入,缩进与文件中行号相对应的空格数,减去1。
grep ... | awk '{ printf "%2$*1$s\n", NR+length-1, $0 }'此处使用的printf格式字符串指定输出第二个字符串参数(即$0,当前行),其字段宽度由第一个参数(NR+length-1,输入中当前行的序号,加上行的长度,减1)提供。这样做的效果就是以交错的方式输出线条,这正是你想要的效果。
大多数awk的非GNU实现都不支持这种更高级的printf格式的使用,因此您需要以不同的方式来解决它。
grep ... | awk '{ print indent $0 } { indent = indent " " }'上面的内容可能比第一个awk命令更容易理解。我们使用一个变量,我们称之为indent。这个变量只包含空格,在输出以indent当前值为前缀的当前行之后,我们为每一行输入添加一个新的空格字符。
在上述两条管道中,grep ...都象征着您在提问时顺便提到的grep命令。
https://unix.stackexchange.com/questions/667818
复制相似问题