Warm tip: This article is reproduced from serverfault.com, please click

output-如何使用awk在值之间打印引号

(output - How to print quotes between value using awk)

发布于 2016-02-24 15:26:05

我有一个档案

A|B|C|D|E|F

我需要像这样的输出

"A","B","C","D","E","F"

我做了:

awk -f'|' '{print $1,$2,$3}'

这给我的输出只是空格。我的问题是如何用引号将逗号分隔的输出以及如何在不键入的情况下一次打印所有值'{print $1,$2,$3......}'

我可以:

awk -f'|' '{print """"$1""""","""""$2""""","""""$3""""..}'

但这是行不通的。

Questioner
Paul
Viewed
0
Benjamin W. 2016-02-25 00:17:10

要指定字段分隔符,你必须使用-F代替-f要更改输出的字段分隔符,你必须更改OFS变量(输出字段分隔符)。

在你的字段周围获取报价,你可以遍历所有字段并添加它们:

$ awk -F"|" -v OFS="," '{for (i=1; i<=NF; ++i){$i="\""$i"\""}}1' infile
"A","B","C","D","E","F"

或者,使用sed:

$ sed 's/\([^|]*\)/"\1"/g;y/|/,/' infile
"A","B","C","D","E","F"

这用引号将所有非管道字符序列括起来,然后用逗号替换所有管道。