Как использовать Sed / Gedit, чтобы удалить все после ":" в файле и записать вывод в другой файл? - PullRequest
1 голос
/ 15 апреля 2020

У меня есть текстовый файл:

"postalAddress2": "Postal Address Line 2",
"postalCity": "Postal City",
"postalPostCode": "Postal Code",
"postalState": "State"

Мне нужно удалить второй столбец, ie, все после ":" и удалить все новые строки

Ожидаемый вывод:

"postalAddress2","postalCity","postalPostCode","postalState"

Можно ли это сделать с помощью sed или regex в gedit?

я пробовал это регулярное выражение, но оно не работает:

.*\:(.*) \:.*

Ответы [ 4 ]

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

С помощью sed и paste:

sed 's/:.*//' file | paste -d ',' -s > other_file

Вывод в другой_файл:

"postalAddress2","postalCity","postalPostCode","postalState"
1 голос
/ 15 апреля 2020

Не могли бы вы попробовать один раз.

awk 'BEGIN{FS=":";OFS=","} {val=(val?val OFS:"")$1} END{print val}' Input_file

ИЛИ черпая вдохновение из комментариев @ Sundeep, попробуйте:

awk 'BEGIN{FS=":"} {print $1}'  Input_file | paste -sd,
0 голосов
/ 15 апреля 2020

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

sed -Ez 's/:[^,]*//mg;s/,\n/,/g' file

Перетянуть файл в память и, используя многострочный режим, удалить все с первого : до следующего появления , на всех

Затем замените ,\n на ,.

0 голосов
/ 15 апреля 2020
$ cat tmp.txt
"postalAddress2": "Postal Address Line 2",
"postalCity": "Postal City",
"postalPostCode": "Postal Code",
"postalState": "State"

$ sed 's/\:.*$//' tmp.txt | tr '\n' ','
"postalAddress2","postalCity","postalPostCode","postalState",
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...