我正在运行一个输出行的应用程序,通过管道传输到 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 个字符并留下我想要的部分。
如果有人有更好的答案,请发表。