удалить табуляцию e в конце строки

удалить табуляцию e в конце строки
printf "%s\t" HEMES n{1..1600} >file_a
sed -i 's/\t*$//' file_a > file_a

удаляет табуляцию, которая появляется в конце строки после первой строки кода (где печатается текст).

Моя проблема теперь в том, что мне нужно удалить табуляцию после этой строки (начинающейся с HEMES) в большем файле, который содержит больше строк. Если я просто попробую строку sed, которая не сработает. Строка, из которой я хочу удалить символ, всегда является первой строкой файла.

решение1

Вместо того чтобы делать все в одной строке и выводить в файл, разделите ее на две части — выведите строку HEMES, а затем добавьте последовательность n{1...1600}: printf "%s" HEMES > file_a; printf "%s\t" n{1..1600} >> file_a.

Если вам нужно удалить именно эту вкладку между HEMES и n1 в уже существующем файле, вот решение awk:

awk ' {sub(/[[:blank:]]/,""); print} ' file_a > tmp_file && cat tmp_file > file_a.

Это делает то, что берет подфункцию, которая удаляетпервыйв случае появления вкладки мы выводим этот текст во временный файл, а затем возвращаем это содержимое в file_a. Причина переключения между файлами следующая: если вы не используете версию awk, которая позволяет редактирование в строке (gnu awk, я полагаю), это будет работать в любом случае - awk, mawk, nawk и т. д.

Связанный контент