Распечатайте всю строку после awk и grep

Возможное решение в awk :

echo 'foo bar' | awk '{x=substr($1,1,1); y=substr($2,1,1); sub(x, y, $1); sub(y, x, $2); print $0}'
boo far

Два Вызов функции substr будет извлекать первый символ из каждой записи, а два вызова функции sub заменят первое появление этих символов друг на друга.

0
07.01.2019, 11:17
3 ответа

Чтобы извлечь строки, третье поле которых, разделенное пробелом -, точно равно S, Mили D, используйте один из

awk '$3 ~ /^[SMD]$/' file

или, используя сопоставление строк вместо сопоставления регулярных выражений,

awk '$3 == "S" || $3 == "M" || $3 == "D"' file

Условие без соответствующего блока будет действовать так, как если бы его блок просто был { print }.

1
28.01.2020, 02:18
awk '$3 ~ /^S/||/^M/||/^D/{print $0}' filename
0
28.01.2020, 02:18

Я думаю, что ваше требование просто требует awk, а не комбинацию с grep. Если вы хотите напечатать всю строку, где третий столбец соответствует любой из этих букв, вам нужно сделать

awk '$3 ~ /^(S|M|D)$/' file
3
28.01.2020, 02:18

Теги

Похожие вопросы