У меня есть текстовый файл, разделенный вкладкой. Некоторые строки имеют 10 столбцов, а некоторые строки имеют 11 столбцов. Я хочу добавить дополнительный столбец в последнюю из 10 строк столбца со значением 0. Как я могу это сделать?Как добавить к строкам с меньшим количеством столбцов в текстовом файле с разделителями вкладок?
-1
A
ответ
2
Поскольку вы упомянули Append, вы можете awk
ниже
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file
-F $'\t'
ухаживает части закладок разделения, BEGIN {OFS = FS}
для установки разделения полого вывода.
NF==10
выглядит только для линий, имеющих только 10 записей, и {$0=$0"0"}1
для восстановления этой линии с добавленным добавленным словом.
Для записи в отдельный файл с помощью оператора >
перенаправлять в
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file
Чтобы заменить оригинальное использование файловой mv
awk -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file > output-file ; mv output-file input-file
Или если у вас есть последняя GNU Awk
(с 4.1.0
отпущена), его имеет возможность редактирования файла «inplace»:
gawk -i inplace -F $'\t' 'BEGIN {OFS = FS} NF==10{$0=$0"0"}1' input-file
0
Это может работать для вас (GNU СЭД):
sed -r 's/[^\t]+/&/11;t;s/$/\t0/' file
Это заменяет одиннадцатый столбец с itsself в противном случае она добавляет вкладку, а затем 0
.
Если я запустил эту команду, он изменит файл? Или я должен сохранить вывод этой команды? Поскольку, когда я точно вставляю эту команду, он начал отображать содержимое в bash –
@RaminZahedi: см. Мое обновление, в котором говорится, как сохранить новый файл – Inian
На самом деле я не хочу сохранять в новый файл, я хочу изменить этот файл. если первая команда только модифицирует входной файл, почему он выводит содержимое в оболочку? –