Я пишу perl-скрипт, который будет запускаться внутри приложения Automator для обработки документов, которые ранее обрабатывались вручную. Мне нужно выполнять этот процесс еженедельно, всегда удаляя одни и те же ненужные данные. Это файлы rtf, преобразованные из файлов html в Mac OS X с использованием другого скрипта Automator для сохранения форматирования. Я создал новый сценарий дроплета для обработки файлов rtf для удаления ненужных ненужных данных.
Мой сценарий оболочки:
#!/bin/bash
#
# replace CR with CRLF
#
/usr/bin/perl -CSDA -pi <<'EOF' - "$@"
s/dateformat//og;
s/text1//og;
s/text2//og;
s/text3//og;
s///og;
EOF
Это позаботится о 99% того, что нужно сделать. Однако окончательный файл выходит с лишним разрывом строки. Есть ли способ сделать так, чтобы замена text1, text2 и т. д. включала удаление следующего за ним разрыва строки? Мое единственное ограничение состоит в том, что это должно быть запущено в окне оболочки сценария Automator.
Входные данные выборки форматируются следующим образом:
Text1 Dateformat
[Content1]
Text2 Dateformat
[Content2]
Text3 Dateformat
[Content3]
Сценарий выше производит вывод:
[Content1]
[Content2]
[Content3]
Желаемый вывод должен быть отформатирован как:
[Content1]
[Content2]
[Content3]
В исходном документе после блока контента есть один разрыв строки, затем Text1
и Dateformat
.
После обработки Text1
и Dateformat
удаляются, но, как вы можете видеть, теперь между блоками контента есть два разрыва строки.
perl -0777 -pe "s/Text\d Dateformat\s*\n//g" input_file.txt
-- надеюсь, проблема была правильно понята. - person Polar Bear   schedule 17.05.2020\s*\n
послеs/
выведенияdateformat
не повлияло на конечный результат. У меня все еще осталось два разрыва строки между концомContent 1
и началомContent 2
. Мне интересно, является ли это проблемой редактирования текста, а не perl. - person podel   schedule 17.05.2020