Найти / заменить специальные символы в текстовом файле с помощью скрипта Bash

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

Я придумал этот фрагмент псевдокода, но заполнение пробелов - это бит сложнее:

Найти новую строку и amp; заменить пространством. Найти CP & amp; заменить на новую строку. Найти Mr. Mime (с пробелом) & amp; заменить на Mr.Mime (без пробела) Найти вкладку & amp; заменить по пространству Найти двойное пространство & amp; заменить на одно место Find % & amp; замените ничем (иначе просто оставьте это) Найдите «ATK DEF STA IV» & amp; замените пробелом

«Найти» означает «Найти все экземпляры».

Я изучал sed, но я не могу найти, как я обрабатывать эти специальные символы.

РЕДАКТИРОВАТЬ: Как задано здесь небольшой фрагмент ввода:

CP 1593 SSS Sudowoodo♀ ATK DEF STA IV 15 15 15 100.0% counter rock slide CP 1262 SSS Tangrowth♀4 ATK DEF STA IV 15 15 15 100.0% vine whip grass knot CP 1077 SSS Mr. Mime♀ ATK DEF STA IV 15 15 15 100.0% confusion psychic

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

1593 SSS Sudowoodo♀ 15 15 15 100.0 counter rock slide 1262 SSS Tangrowth♀4 15 15 15 100.0 vine whip grass knot 1077 SSS Mr.Mime♀ 15 15 15 100.0 confusion psychic
1
задан 21 February 2018 в 18:55

3 ответа

sed текстовый процесс строго ориентирован по строкам, поэтому довольно сложно заменить newlines на sed. Untested:

cat file |
  tr '\n\t' '  ' |
  sed -e 's/ CP /\n/g' \
      -e 's/Mr[.] Mime/Mr.Mime/g' \
      -e 's/   */ /g' \
      -e 's/%//g'
5
ответ дан 22 May 2018 в 12:58
  • 1
    Бесполезное использование cat. В противном случае +1. – David Foerster 21 February 2018 в 16:29
  • 2
    @zotteken: Если этот ответ был полезен для вас, пожалуйста, подумайте о том, чтобы отметить его как принятый ответ (щелкнув по серому галочку ✓ налево), чтобы другие могли легче найти его в будущем. Это также вежливый способ поблагодарить человека, отвечающего на ваш вопрос за то, что вы помогли вам. – pa4080 24 February 2018 в 12:38

sed текстовый процесс строго ориентирован по строкам, поэтому довольно сложно заменить newlines на sed. Untested:

cat file | tr '\n\t' ' ' | sed -e 's/ CP /\n/g' \ -e 's/Mr[.] Mime/Mr.Mime/g' \ -e 's/ */ /g' \ -e 's/%//g'
5
ответ дан 17 July 2018 в 20:18

sed текстовый процесс строго ориентирован по строкам, поэтому довольно сложно заменить newlines на sed. Untested:

cat file | tr '\n\t' ' ' | sed -e 's/ CP /\n/g' \ -e 's/Mr[.] Mime/Mr.Mime/g' \ -e 's/ */ /g' \ -e 's/%//g'
5
ответ дан 23 July 2018 в 21:00

Другие вопросы по тегам:

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