1

Я пытаюсь заменить все возвраты каретки запятой в текстовом файле, но я должен неправильно использовать команду sed .

Так как я могу echo -e "\x0D" и получить возврат каретки, я попробовал sed -e 's/open/'$(echo "\x0D")'/' 1.txt > 2.txt безрезультатно. 1.txt содержит возврат каретки, как вы могли предположить. Эта команда создает 2.txt который содержит текст x0D .

2 ответа2

1

Это не совсем характерно для Mac OS X; та же концепция работает на большинстве любых ОС Linux/Unix. Но хотя вы можете сделать это в sed (потоковом редакторе), вы также можете использовать tr (перевод символов) следующим образом:

tr '\r' , < foo.txt

Так что, если содержимое foo.txt это:

123
456
789

Результатом этой команды tr будет:

123,456,789,

И чтобы затем вывести результаты этой команды в файл, добавьте в конец add > bar.txt следующим образом:

tr '\r' , < foo.txt > bar.txt
0

tr - лучшее решение, но вы спросили, как это сделать в sed .

с ANSI-C цитирование:

sed -E 's/'$'\r''/,/' file

sed $'s/\r/,/' file

без ответа:

cr=$(printf '\r')
sed 's/'"$cr"'/,/' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .