Дано: в записи 40 столбцов. Я хочу заменить 35-й столбец, чтобы 35-й столбец был заменен содержимым 35-го столбца и символом «$». Что пришло в голову, это что-то вроде:
awk '{print $1" "$2" "...$35"$ "$36...$40}'
Это работает, но потому что это невозможно, когда число столбцов достигает 10 КБ. Мне нужен лучший способ сделать это.
linux
text-processing
awk
replace
Маркус Торнтон
источник
источник
sed 's/./$&/35'
$
разделенными или нет. Вышеприведенная вещь должна прикрепить 35-е вхождение любого числа символов-разделителей - иными словами, 35-е поле - с символом$
- независимо от того, как символы в каждом поле.Чтобы зарезервировать оригинальный Field-Seprator, я сделал это. Колонка, которую я хотел исключить, была номер 12 долларов.
С помощью
gawk -i
, если у вас есть, вы можете редактировать файл на месте.источник
Если бы возникли проблемы с использованием «одобренных» ответов, он заменил бы не только первый столбец в файле. Я использую эту общую команду:
Где:
[column]
= столбец, который вы хотите изменить, начиная с 1 (не 0)[replace]
= текст, который вы хотите заменитьисточник
awk '$1=mktime($1)' FS=, OFS=, oldfile > newfile
... заменил миллион меток за несколько секунд !! :)