Подтвердить что ты не робот

Замена управляющего символа в sed

Мне нужно заменить все вхождения управляющего символа CTRL + A (SOH/ascii 1) в текстовый файл в linux, как это можно сделать в SED?

4b9b3361

Ответ 1

Это можно сделать с помощью cat с параметрами -v (эквивалентно --show-nonprinting и подключить его к sed).

Если управляющий символ - символ начала начала (SOH) (CTRL + A/ASCII 1), и мы хотим заменить его вкладкой, мы сделаем следующее:

cat -v file | sed 's/\^A/\t/g' > out

cat -v заменит символ SOH на ^ A, который затем будет сопоставлен и заменен в sed.

Ответ 2

Try:

sed 's/^A/foo/g' file

Используйте Ctrl + V + A для создания последовательности ^A в приведенной выше команде.

Ответ 3

Под "replace" я предполагаю, что вы хотите изменить файл "на месте".

Использование команды GNU:

# Create a file with a single control character (SOH)
echo -e "\x01" > file
# Change SOH control characters to the literal string "SOH"
sed -i 's/\x01/SOH/g' file
# Check result
cat file

дает...

SOH

Опция -i не работает на OS X sed, поэтому вам необходимо обходить ее, связывая sed с временным файлом.

Ответ 4

Что вы хотите заменить? Если замена является единственным символом, tr является лучшим выбором, чем sed. Чтобы заменить буквой "a":

tr '\1' a < input-file > tmp && mv tmp input-file

Ответ 5

Вы можете использовать команду tr

tr -s '\ 001' '|' NewFile

tr -s "слово или разделитель" хотите заменить словом "word или delimiter" newfile