Команда Awk не работает должным образом

У меня очень простая проблема, но по причинам она не работает должным образом.

У меня эти .txt файлы в следующем формате

 2 250 1 4 250 1 5 250 1 

Я хотел вычесть 1 из чисел в первом столбце, давая:

 1 250 1 3 250 1 4 250 1 

Я использую этот код в bash:

 awk '{ print $1-1,$2,$3 }' file.txt > newfile.txt 

Я думаю, что этот код в порядке, однако, из-за того, что эти текстовые файлы имеют расширение своего файла, измененное с .csv на .txt , эта строка awk не работает нормально. Это дает:

 1 250 1 4 

Любые альтернативы, которые могут хорошо работать с этими текстовыми файлами, которые у меня есть?

Обновления: я использовал редактор pico для повторного создания одного из этих файлов, и теперь приведенный выше код работает отлично, поэтому в исходных текстовых файлах должно быть что-то неправильное с точки зрения форматирования и свойств … любые идеи?

  • Сохранение значения столбца при выполнении awk-группы
  • Заменить символы в пользовательской части адреса электронной почты
  • Как удалить "" из каждого столбца
  • Добавление символа в n-й позиции соответствующей строки
  • Объединить столбцы с помощью awk? (Или другие предложения)
  • Как напечатать строку в конце строки с помощью awk?
  • Нужна помощь в обработке текстового файла с awk для соответствия формату файлов CSV
  • Как выбрать определенные наборы или вытеснить из файла, если struture содержит определенную строку?
  • 3 Solutions collect form web for “Команда Awk не работает должным образом”

    Описанная проблема связана с окончанием строки. Если в текстовых файлах есть линии окончания возврата каретки / строки, то awk увидит возврат каретки как еще один символ пробела и перезапишет текст на выходе.

    OP исправил проблему путем редактирования с помощью pico (который предполагает линейные линии линии, в соответствии с этим упрощенным способом установки строки разрывов страницы). Также можно использовать такие программы, как dos2unix для фиксации строк.

    Дальнейшее чтение:

    • Просмотр строк в текстовом файле
    • Что такое ^M и как я могу избавиться от него?
    • Удалите специальный шаблон ^ M из скрипта, который добавлен после FTP из окон в Unix

    То, что сказал @Thomas Dickey, похоже, является решением!

    Я использовал этот код perl -pe 's/\r\n|\n|\r/\n/g' для преобразования текстовых файлов в формат unix. Он похож на программу dos2unix. Теперь, Awk работает отлично!

    Всем спасибо

    unix2dos/dos2unix могла бы решить эту проблему довольно легко. Если у вас установлена ​​машина UNIX/Linux , попробуйте установить ее и запустите:

    dos2unix file

    В UNIX/Linux перед обработкой любого текстового файла разумно запускать служебную программу для того, чтобы узнать, какая у него контенция.

    Linux и Unix - лучшая ОС в мире.