
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 и т. д.