Команды AWK находят и заменяют строку и печатают все, что находится после ключевого слова [закрыто ]

Новое в командах Linux .. Какой синтаксис я бы использовал для поиска и замены строки с каждой строкой, начинающейся с "Data Center:" Адресная информация, которая различается в каждой строке ", но заканчивается словом Site: и мне нужно сохранить подробности о сайте, которые следуют ниже ..

Пример:

Input.txt
Data Centre: 23 Mulberry lane, Washington Site: 9067 Green

Expected Output
Site: 9067 Green

Я нашел примеры gsub, но gsub недоступен в моей ОС.

Любая помощь приветствуется.

Mac

-1
задан 13 September 2018 в 00:18

2 ответа

Если Вы будете использовать точку с запятой в качестве разделителя полей, что Вы хотите, то будет в последнем поле

awk -F ':'  '/Site:/ { print "Site: ", $NF }'
3
ответ дан 27 October 2019 в 23:39

Вот a sed решение, которое использует расширенные регулярные выражения -r и группы получения ()->\1:

sed -r 's/^Data Centre:.*(Site: .*)$/\1/' Input.txt

Если Вы хотите подавить вывод каких-либо других строк, которые могли бы появиться в файле:

sed -n -r 's/^Data Centre:.*(Site: .*)$/\1/p' Input.txt

Добавьте опцию -i.bak чтобы сделать изменения и файл резервной копии одновременно, ot перенаправляют вывод в новый файл.

3
ответ дан 27 October 2019 в 23:39

Другие вопросы по тегам:

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