файл convert (sed или awk, или что-нибудь), содержащий следующее: - PullRequest
0 голосов
/ 21 апреля 2020

Я ищу способ преобразовать с помощью одной строки linux команды (sed или awk, или что-нибудь еще) следующий файл (example1.txt);

1.2.3.4:21
172.16.1.2:80
192.168.5.4:443
192.168.10.1:7007

в такой формат :

"1.2.3.4" "21"
"172.16.1.2" "80"
"192.168.5.4" "443"
"192.168.10.1" "7007"

Любая помощь будет очень признателен, спасибо.

Ответы [ 4 ]

1 голос
/ 21 апреля 2020

sed с одним s//:

$ sed 's/\([^:]*\):\(.*\)/"\1" "\2"/' input.txt
"1.2.3.4" "21"
"172.16.1.2" "80"
"192.168.5.4" "443"
"192.168.10.1" "7007"
1 голос
/ 21 апреля 2020

Вот один из способов:

$ sed 's/:/" "/g; s/.*/"&"/' example1.txt 
"1.2.3.4" "21"
"172.16.1.2" "80"
"192.168.5.4" "443"
"192.168.10.1" "7007"

Первая команда s заменяет каждое двоеточие на " ", а вторая просто добавляет начальные и конечные двойные кавычки. Используйте флаг i, если необходимо сохранить изменения в исходном файле.

0 голосов
/ 21 апреля 2020

Поскольку решения awk еще не опубликованы:

$ awk -F':' -v OFS='" "' '{$1=$1; print "\"" $0 "\""}' file
"1.2.3.4" "21"
"172.16.1.2" "80"
"192.168.5.4" "443"
"192.168.10.1" "7007"
0 голосов
/ 21 апреля 2020

Это может работать для вас (GNU sed):

sed 's/[^:]*/"&"/g;y/:/ /' file

Поля окружения, разделенные : s двойными кавычками, и заменить : пробелами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...