как использовать sed, чтобы реорганизовать файл - PullRequest
0 голосов
/ 09 мая 2018

У меня есть файл, который повсюду, и я в некотором роде уродливый, я не чувствую себя комфортно, когда делюсь своим файлом с общедоступным сайтом, так что плохо говорю, что файл называется синхронизацией и выглядит так

hh-hhhhhhhh-hhhhhhhh - sdgsg
hh-dgsdgdfgsgsdfgdgsdgsssd - dhhdhdh
fd-gdsg - dfsggs
dgssd-gdgsdg - fsdgsdg
dfgdg-sdgsgsdgsdgs - dghgdgs
dfsg-sdgdgdg - dsggg
sdgsdgdg-sgsgsdgsdggs;

Я сделал

sed -i 's/-/;/p' sync

потому что я хотел; в конце каждой строки я пытался использовать специальный символ с символом sed, например

sed -i 's/\* - \*/;/p' sync

Можно ли изменить все после последней черты, используя только точку с запятой, и организовать ли это следующим образом

 ggf-sdgsdfgfg;
 dg-gdfggdg-ggdfgdg;
 dggsdhds-hsdhshddgfdg;
 dgdhg-dggdggdgdgdfgdg-dfgg;
 fdgdgf-gdgfgd-fgdfgdgdgdgdgdg;
 dgdgdgd-gdfgdggdgdf-ggdfgdfgdggd;

1 Ответ

0 голосов
/ 09 мая 2018

Если ваша цель - убрать пробелы и поставить точку с запятой в конце каждой строки, вы можете попробовать это:

sed 's/$\|;$/;/g' sync | sed 's/ //g' > output

Объяснение: первая команда заменяет все [конец строки] ИЛИ [точку с запятой, за которой следует конец строки] на одну [точку с запятой]. Вторая команда sed заменяет все [пробелы] на [ничто].

Надеюсь, это поможет! :)

...