差不多好了。只需将两个列引用彼此相邻即可。
cat logfile | sed 's/|/ /' | awk '{print $1, $8}'
另请注意,您不需要cat
此处。
sed 's/|/ /' logfile | awk '{print $1, $8}'
另请注意,您可以说awk
列分隔符是|
,而不是空格,因此您不需要sed
。
awk -F '|' '{print $1, $8}' logfile
按照建议通过迦勒,如果你想仍然输出最后一个字段,即使有不完全八个解决方案,你可以使用$NF
。
awk -F '|' '{print $1, $NF}' logfile
此外,如果希望输出保留|
分隔符,而不是使用空格,则可以指定输出字段分隔符。不幸的是,它不仅比使用-F
标志还要笨拙,但是这里有三种方法。
您可以awk
在BEGIN块中自己分配输入和输出字段分隔符。
awk 'BEGIN {FS = OFS = "|"} {print $1, $8}' logfile
awk
在命令行中通过-v
标志调用时,可以分配这些变量。
awk -v 'FS=|' -v 'OFS=|' '{print $1, $8}' logfile
或者简单地:
awk -F '|' '{print $1 "|" $8}' logfile