Закрепленные исключения с помощью find или fd

awk не идентифицирует ^Mбуквально, он идентифицирует его как шаблон CRLF \r\n, поэтому ваш sub()может использовать представление символа CR напрямую, как показано ниже. Также вам не нужно проверять, содержит ли поле символ, и делать замену. Функции замены просто ничего не делают, если указанный шаблон не найден. Итак, все, что вам нужно, это заменить CR только в последнем столбце.

awk '{ sub("\r", "", $NF); print $NF }' 

Если необходимо заменить несколько столбцов, переключите $NFна нужный столбец.

Если вы делаете это в цикле для всех столбцов до конца файла, просто выполните

awk '{ for(i=6; i<=NF ; i++) { sub("\r", "", $i); printf "%s ", $i; } }'

Также файл может иметь только крайние NFстолбцы, а $NFявляется последним значением столбца. Измените цикл так, чтобы он выполнялся до NF, чтобы получить доступ к последнему значению столбца.

1
24.05.2021, 10:31
1 ответ

Чтобы провести различие между двумя случаями,используйте предикат -path:

$ find. -path./a -prune -o -type f -print
1
28.07.2021, 11:29

Теги

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