От поста:
Я попробовал ниже команды, но не в состоянии заменить, пожалуйста, сделайте все необходимое.
Cat Out | tr '\ n' '' '
Проблема с приведенным выше командой: TR
понимает \ N
как «Новый символ линии»
$ man tr | grep Interpreted -A 18
SETs are specified as strings of characters. Most represent themselves. Interpreted sequences are:
\NNN character with octal value NNN (1 to 3 octal digits)
\\ backslash
\a audible BEL
\b backspace
\f form feed
\n new line
\r return
\t horizontal tab
\v vertical tab
Укажите \ N
Вам необходимо указать [Backslash] [n] IE \\ n
(см. Спецификацию, перечисленные выше). Таким образом, используйте следующую команду:
tr -s '\\n' ' '
на CAT
File1
и Redirect (>
) - file2
Использование:
cat file1 | tr -s '\\n' ' ' > file2
Но проблема с использованием TR
- это то, что он переводится каждый \
и n
n для пространства .
Итак, я рекомендую использовать SED
следующим образом:
Команда для SED SED
SED SED ( Sed 'S / Old-string / New-String / G' In> Out
):
sed 's/\\n/ /g' file1 > file2
здесь только \ N
(все слово) будет преобразовано в пространство
Вы можете попробовать трюк!
Сначала избавляйтесь от «n» в конце файла:
cat "your_file.txt" | sed -e 's/\<n\>//g' > "new_file.txt"
затем избавьтесь от символа «\»:
cat "new_file.txt" | tr -s "\\" " " > "final_file.txt"
, и у вас будет вывод без \ n.
Если вы хотите заменить два символа \
и n
в конце каждой строки с пространством, используйте
sed 's/\\n$/ /' < file1
Обратите внимание, что ваш Пример выхода имеет несколько пробелов после A
и одно пространство после D
, но указанная команда всегда помещает одно пространство.
Альтернативой будет взять только первый символ, используя cut
:
$ cut -c1 < input_file
A
D