Bash-скрипт печатает знак доллара и \r в awk

find имеет параметр -notили !, который отменяет предыдущий, и -deleteдля удаления файлов:

find. ! -mtime -1 -type f -delete

Обратите внимание, что -notне соответствует стандарту POSIX

0
21.04.2020, 20:11
1 ответ

Ваш входной файл является текстовым файлом DOS. Это означает, что последний символ в каждой строке, который увидит инструмент Unix, является символом возврата каретки (, который обычно пишется\r).

Вы получаете это \rиз вывода второй программы awk, потому что это часть третьего поля строки. Его нет во втором поле, потому что второе поле находится не в конце строки, поэтому первая программа awkне генерирует строку с \rв ней.

Вы также можете использовать bash -xдля запуска скрипта. Это позволяет отслеживать (отладочный )вывод из оболочки. Когда оболочка выводит трассировку команды, включающей специальный символ, например возврат каретки, полезно (? )заключает связанную строку в кавычки как «строку C», то есть как $'...'.

Преобразуйте файл входных данных в текстовый файл Unix, используя, например,. dos2unix.

0
19.03.2021, 02:27

Теги

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