ほぼそこに。両方の列参照を並べて配置するだけです。
cat logfile | sed 's/|/ /' | awk '{print $1, $8}'
また、cat
ここでは必要ないことに注意してください。
sed 's/|/ /' logfile | awk '{print $1, $8}'
またawk
、列の区切りが|
空白ではなくであるためsed
、どちらも必要ないことを確認できます。
awk -F '|' '{print $1, $8}' logfile
あたりとして提案することによりカレブ、あなたはまだ正確に8がない場合であっても、最後のフィールドを出力ソリューションをしたい場合は、使用することができます$NF
。
awk -F '|' '{print $1, $NF}' logfile
また、出力を保持したい場合 |
スペースを使用する代わりに区切り文字場合は、出力フィールドの区切り文字を指定できます。残念ながら、-F
フラグを使用するよりも少し不器用ですが、次の3つの方法があります。
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