Использование AWK: присвойте переменной различное количество связанных полей

Noté que no abrí el puerto 443 en Amazon AWS. Después de abrir el puerto, funciona. esta configuración funciona conmigo.

1
15.03.2020, 12:08
3 ответа
awk 'NR==1 && NF==4 { var=$2 $3 $4 } NR==1 && NF!=4 { var=$2 }' /path/to/input
0
28.04.2021, 23:47

Вы можете

awk '{$1=""; print (NF==4)?$0:$2; exit}' OFS= infile

Тернарный оператор условия (NF==4)?$0:$2проверяет, было ли N число F полей равным 4 (, когда поля разделены пробелами(awk по умолчанию FS )), затем напечатайте всю строку $0после того, как мы разделим первое поле $1="", иначе :напечатайте файл #2 $2.

0
28.04.2021, 23:47
awk 'NF == 4 { print $2 $3 $4; exit } { print $2; exit }' file

Это объединяет второе, третье и четвертое поля, если в первой строке файла имеется ровно четыре поля, -разделенные пробелами. В противном случае будет возвращено второе поле из первой строки файла. Программа завершает работу, как только она что-либо выводит, поэтому мы уверены, что это только первая строка, которую мы когда-либо увидим.

С другой логикой:

awk 'NF == 4 { out = $2 $3 $4 } NF != 4 { out = $2 } { print out; exit }' file

или,

awk '{ out = $2 } NF == 4 { out = out $3 $4 } { print out; exit }' file

Любая из этих команд входит в вашу подстановку команд:

var=$( awk... )
1
28.04.2021, 23:47

Теги

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