2013-12-10 2 views
1

всеКак сделать awk уважением разделителя полей?

Я передаю строку awk с запятыми как разделитель полей. Я бы хотел, чтобы awk производил вывод, используя запятые в качестве разделителя. Однако awk меняет запятую на пробелы.

echo "qwer,asdf,zxcv" | awk -F',' '{gsub("a","b",$2); print $0}' 
qwer bsdf zxcv 

Есть ли способ сделать awk уважением символа разделителя исходного входа?

ответ

2

Определить OFS, то есть, поле вывода Сепаратор:

$ echo "qwer,asdf,zxcv" | awk -F',' 'BEGIN{OFS=","}{gsub("a","b",$2); print $0}' 
qwer,bsdf,zxcv 

Следует также отметить, что {print $0} может быть пропущен и -F также включены в BEGIN{} блока:

$ echo "qwer,asdf,zxcv" | awk 'BEGIN{FS=OFS=","}{gsub("a","b",$2)} 1' 
qwer,bsdf,zxcv 

давая 1 мы даем условие True, которое по умолчанию оценивается как {print $0}.

3

Вы можете сделать, как это с awk

echo "qwer,asdf,zxcv" | awk -F, '{gsub("a","b",$2); print $0}' OFS=, 
qwer,bsdf,zxcv 
Смежные вопросы