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