вставить символ CR в файл с помощью сценария оболочки - PullRequest
0 голосов
/ 08 июня 2018

У меня есть огромный блок данных, который я хочу разбить на строки, вставив символ возврата каретки перед некоторыми определенными шаблонами.(на данном этапе я не хочу использовать команду linux split).

Итак, я смотрю на:

  1. как определить шаблон в блоке данных
  2. как вставить CR прямо перед начальной позицией шаблона.

Пример:

блок равен 1234abcde56785abcde53453FEFDabcde

результат должен выглядеть так внутри файла:

1234
abcde56785
abcde53453FEFD
abcde

спасибо сообществу!

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Не уверен полностью в ваших требованиях, основываясь на показанном вами выводе. Пожалуйста, попробуйте выполнить следующее и дайте мне знать, если это поможет.

awk '{gsub(/abcde/,"\n&")} 1' Input_file

ИЛИ (в случае abcde строка не собираетсябыть всегда одинаковым и это может быть любое маленькое буквенное слово)

awk '{gsub(/[a-z]+/,"\n&")} 1'  Input_file
0 голосов
/ 08 июня 2018

Ваш шаблон был непростым для понимания, поэтому в следующий раз попробуйте добавить информацию:

Вы можете использовать следующую команду sed:

echo "1234abcde5678abcde53453FEFDabcde" | sed -E 's/(abcde[0-9]*[A-Z]*)/\n\1/g'                                                
1234
abcde5678
abcde53453FEFD
abcde

Если вам нужночтобы иметь Windows EOL, измените его на

sed -E 's/(abcde[0-9]*[A-Z]*)/\r\n\1/g'

. Для объяснения о sed:

  • -E для расширенной поддержки регулярных выражений, в противном случае вам нужно экранировать такие символы, как (,),+,{,}
  • s/PATTERN/REPLACEMENT/g команда для поиска и замены в глобальном режиме

Для пояснений по регулярному выражению:

demo

  • () для группировки и обратной ссылки
  • abcde[0-9]*[A-Z]*, чтобы сопоставить все, что начинается с abcde, затем, в конечном итоге, некоторые цифры и, в конечном итоге, некоторые заглавные буквы:

Начальная точка регулярного выражения: http://www.rexegg.com/regex-quickstart.html

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