удаление специальных символов из файла в Linux

#linux

#linux

Вопрос:

Я пытаюсь удалить кучу ^ K из файла в linux для класса, но все, что я пытался, не работает.

итак, я просматриваю файл memo.txt и у него есть линии с двойным интервалом

Я уменьшаю размер файла, и после каждой строки в нем есть ^K

Я пытаюсь удалить ^K и вывести его в новый файл

Я пытался

 cat memo.txt | tr -d "n" > memo.new
cat memo.txt | tr -d "^K" > memo.new
  

и некоторые другие функции sed.

Комментарии:

1. Каждый символ по-своему особенный.

Ответ №1:

Возможно, вы захотите попробовать что-то вроде этого:

 tr -d '13' < memo.txt > memo.new
  

013 является восьмеричным значением для символа ^K .

Комментарии:

1. Спасибо за ответ, а не просто за справочную страницу. Я знаю, что это для школы, но я пытался.

2. Вы также можете получить значение, нажав Ctrl v, а затем Ctrl K. Ctrl v заставляет следующий ввод указывать его буквальное значение вместо обычного эффекта

3. @Джонатан Каллен, как вы нашли восьмеричное значение ^K?

4. ^A через ^Z — это символы, пронумерованные 1-26; K это 11-я буква, поэтому простое базовое преобразование дает 013 восьмеричное число.

Ответ №2:

Взгляните на:

 man strings
  

это имхо именно то, что вы хотите…

Комментарии:

1. Вы чувствуете необходимость потенциально уничтожить содержимое только для полного удаления одного символа?

Ответ №3:

Я думаю, что ответ ABCD будет работать. Но если это не сработает, попробуйте выполнить следующее:

 tr -d "`echo -e '13'`" < memo.txt > memo.new
  

Встроенная команда echo выведет фактический символ ^K, поэтому tr будет точно знать, что нужно удалить.