Как я могу поставить строку перед другой с помощью sed? - PullRequest
0 голосов
/ 29 октября 2018

Как конвертировать файл следующим образом:

ghosts: [[8, 16]]
pacman: [3, 15]
ghosts: [[4, 26]]
pacman: [4,15]

в файл вроде этого:

ghosts: [[8, 16]], pacman: [3, 15]
ghosts: [[4, 26]], pacman: [4,15]

с помощью команды sed?

Я попытался sed -e 's/\npac/, pac/g' input_file и в результате не получил никаких изменений.

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

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

 sed 'N;s/\n/, /' file

Добавьте следующую строку к текущей и замените новую строку запятой, за которой следует пробел.

0 голосов
/ 29 октября 2018

еще awk

$ awk '{ORS=NR%2?", ":RS}1' file

ghosts: [[8, 16]], pacman: [3, 15]
ghosts: [[4, 26]], pacman: [4,15]

или, с pr

$ pr -2ats', ' file

это должен быть кратчайший путь!

0 голосов
/ 29 октября 2018

Учитывая, что ваш фактический Input_file такой же, как показанные примеры, и если вы в порядке с awk, то следующее может помочь вам в том же.

awk -v s1="," '{printf("%s%s",$0~/^ghosts/ && FNR>1?ORS:FNR==1?"":s1 OFS,$0)} END{print ""}'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...