Удаление сопоставления с помощью sed не работает с Mac OS Catalina - PullRequest
0 голосов
/ 24 октября 2019

Я отчаянно ищу ответ на кажущуюся очень простой проблему: я хочу удалить все соответствующие шаблоны из текстового файла. Я использую следующую команду под Mac OS Catalina:

sed 's/^M//' $filename > text_clean.txt

Где $filename содержит имя txt-файла, в котором я выполняю операцию. Шаблон «^ M» обозначает новыйсимвол линии в Mac OS: я протестировал почти все из того, что смог найти, и это единственное работающее решение.

Итак, следующая команда выполняет свою работу:

sed 's/^M/AAAAA/' $filename > text_clean.txt 

Но только отчасти потому, что он заменяется символами "AAAAA", а это не то, что мне нужно.

При выполнении sed 's / ^ M //' $ filename> text_clean.txt,Полученный файл полностью не изменился, поэтому я предполагаю, что либо команда не выполняется (но почему?), либо я должен вставить определенный «пустой» символ, так как я использую оболочку Mac OS (но какую?).

Я также тестировал с помощью gsed (после установки homebrew) ... но результаты строго такие же, как указано выше.

Я предполагаю, что упускаю что-то очевидное, но я действительноне вижу что!

1 Ответ

0 голосов
/ 24 октября 2019

Давайте попробуем по-другому, используя grep.

Я создал файл test.txt, как показано ниже

bash-3.2$ cat test.txt
AA
BB
CC
MA
MB
BM
CM
MU
MZ
SH
JH
HJ
12M
M45
M*&
M#$
12

с grep

bash-3.2$ grep -v ^M test.txt > tmp.txt; mv tmp.txt test.txt

сделать grepс "^ M", то есть все строки начинаются с "M" и выбирают остальные строки с использованием обратной опции "-v". Перемещение вывода grep в файл tmp.txt и его замена в исходный файл.

bash-3.2$ cat test.txt
AA
BB
CC
BM
CM
SH
JH
HJ
12M
12

Goodluck.

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