Как сопоставить шаблон и заменить только часть шаблона?

, если удаленная машина напрямую подключена к Интернету:

hostname -I|cut -f1

в противном случае, одно из следующих:

wget -qO - http://whatsmyip.me/
wget -qO - http://ipinfo.io/ip
wget -qO - http://ipecho.net/plain; echo

Во всех случаях должно выполняться на удаленная машина.

3
11.05.2017, 13:33
2 ответа

Более простое решение с использованием tr следующим образом:

cat file | tr "," "\n"

Где tr будет искать запятую , и заменять ее новой строкой \n

Вывод:

5LkoVZg0BABCBkD9OieAflA==|list1|true|0|0|0|172661|1.16|186042
 5o0QEZg0BABCA3j9OieAflA==|list2|false|0|0|0|0|0|0
 5F3NnwwoBABC1Dfrsf9xucw==|list3|false|0|0|0|0|0|0
 5FaJmwwoBABC0-frsf9xucw==|...

Обратите внимание, что пробелы перед запятой сохранены.

0
27.01.2020, 21:18

sedподход:

cat file
5LkoVZg0BABCBkD9OieAflA==|list1, |true|0|0|0|172661|1.16|186042, 5o0QEZg0BABCA3j9OieAflA==|list2|false|0|0|0|0|0|0, 5F3NnwwoBABC1Dfrsf9xucw==|list3|false|0|0|0|0|0|0, 5FaJmwwoBABC0-frsf9xucw==|...

sed 's/, \(\S*==\)/\n\1/g' file

Выход:

5LkoVZg0BABCBkD9OieAflA==|list1, |true|0|0|0|172661|1.16|186042
5o0QEZg0BABCA3j9OieAflA==|list2|false|0|0|0|0|0|0
5F3NnwwoBABC1Dfrsf9xucw==|list3|false|0|0|0|0|0|0
5FaJmwwoBABC0-frsf9xucw==|...

\S*==-последовательность не -пробельных символов, за которыми следует ==, рассматриваемая как ведущая последовательность каждой строки

4
27.01.2020, 21:18

Теги

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