awk: установить желаемое количество столбцов?

Я решил эту проблему, отредактировав и добавив адрес DNS в файл ifcfg-enp0s3. Я добавил адрес 8.8.8.8 для DNS.

0
05.12.2016, 10:00
4 ответа

Если разделитель может появляться внутри полей, то на самом деле это не разделитель. Вместо этого я бы использовал что-то вроде

KEY=$(sed -n '/^key *=/ { s/^key *= *//; p }' file.conf)

: это ищет строки, начинающиеся с ключа , за которым следует любое количество пробелов и знак = , удаляет начало строки и печатает его . Как указывает dave_thompson_085 , p может быть обусловлено s :

KEY=$(sed -n 's/^key *= *//p' file.conf)

Эквивалентным AWK является

KEY=$(awk '/^key *=/ { sub("^key *= *", ""); print }' file.conf)

, и можно использовать тот же трюк комбинирования:

KEY=$(awk 'sub("^key *= *", "")' file.conf)
3
28.01.2020, 02:19

Еще один вариант, на этот раз с grep:

KEY=$(grep -Po  '^key\s*=\s*\K.*'  f.conf )
1
28.01.2020, 02:19

Вы можете получить то, что хотите, используя эту команду:

KEY=$(awk -F 'key *= *' '{print $2}' f.conf)
0
28.01.2020, 02:19

просто уберите значение первого столбца

KEY=$(awk -F= '{$1="";sub("=","")}1' OFS="=" file.conf)
0
28.01.2020, 02:19

Теги

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