Некоторые символы исчезают после обработки текстового файла

Есть пара шагов к тому, что вы хотите.

Во-первых, вам нужно поставить NC -K -L -P 9100 | Tee Labels.txt в скрипт, и добавьте обработчик для SIGHUP , чтобы перезапустить команду.

Далее вам нужно настроить logrotate , ну, поверните журналы.

1
14.03.2015, 00:05
2 ответа

Мне было рекомендовано попробовать DOS2UNIX Addments.txt , и может сказать, что это решило проблему. Большое спасибо !!

0
28.01.2020, 01:43

Что происходит, в том, что файл находится в формате Windows, где Newlines представлены двум символом CR, LF. Вы используете Unix Tools, которые ожидают, что нью-новинки представляют собой пункт Unix, с простом символом LF. Оболочка лечит CR (возврат каретки) как обычный характер, поэтому он становится частью значения адреса . Когда вы распечатаете результат на терминале, терминал интерпретает персонажа CR как «вернуться к началу текущей строки», поэтому в том, что .html [114933] .html .html . линии.

Вы можете Преобразовать файл в использование нью-модулей Unix .

Если вы хотите, чтобы ваш код был надежным для ввода файлов с кодировкой Windows Newline, вы можете сообщить оболочку для лечения CR как символ пробелов, добавив его в переменную IFS .

while IFS="$IFS$(printf '\r')" read address; do
  echo "${address}.html"
done <addresses.txt

Другое решение было бы раздевать символ CR с конца значения в случае, если он там, используя расширение параметра . Обратите внимание, что Backslash-ueLine для продолжения строки не будет работать, если файл фактически содержит backslash-cr-newline, поэтому вы должны выключить это, чтобы избежать путаницы.

CR=$(printf '\r')
while read -r address; do
  address=${address%$CR}
  echo "${address}.html"
done <addresses.txt

В KSH93, Bash и ZSH вы можете использовать $ '\ R' вместо $ (printf '\ R') .

0
28.01.2020, 01:43

Теги

Похожие вопросы