从命令 STDOUT 中删除 X 个字符

从命令 STDOUT 中删除 X 个字符

我正在运行一个输出行的应用程序,通过管道传输到 GREP 以仅选择特定的行,但想要删除没有价值的头 X 个字符。

具体来说:

varnishlog | grep Hash

例如生产

   34 Hash         c /address
   41 Hash         c /addresss?xml=1&

我想要“c”后面的最后一部分,以便将它们记录在文件中。

我要通过管道传输哪个命令。

答案1

awk 可以工作,但我认为 cut 对于这个任务来说更简单,例如

$ varnishlog | grep Hash | cut -b 23-

-b 指定字节,23- 表示将第 23 个字节保留到行尾。

您还可以使用 -c,它是字符而不是字节(在这种情况下,字符 == 字节)

答案2

我进行了一些研究并使用 AWK 得出了以下结论:

$ varnishlog | grep Hash | awk {'print substr($0,23)}'

这会过滤掉前 23 个字符并留下我想要的部分。

如果有人有更好的答案,请发表。

相关内容