Майже там. Просто покладіть обидві посилання стовпців поруч.
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