如何使用awk打印值之间的引号
How to print quotes between value using awk
我有一个文件
A|B|C|D|E|F
我需要像
这样的输出
"A","B","C","D","E","F"
我做到了:
awk -f'|' '{print ,,}'
这给我的输出只有空格。我的问题是如何使用引号获得逗号分隔的输出,以及如何在不键入 '{print ,,......}'
的情况下一次打印所有值
我能做到:
awk -f'|' '{print """"""""","""""""""","""""""""..}'
但是不行。
要指定字段分隔符,您必须使用-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/\([^|]*\)/""/g;y/|/,/' infile
"A","B","C","D","E","F"
这会用引号将所有非竖线字符序列括起来,然后用逗号替换所有竖线。
awk -F"|" '{print "\""$1"\","""\""$2"\",""\""$3"\""}'
另一个awk
$ awk -F'|' -v OFS='","' -v q='"' '{[=10=]=q [=10=] q; =}1' file
"A","B","C","D","E","F"
字段分隔符由 awk
自动处理,只需要第一个和最后一个字段的帮助。等价地,
$ awk -F'|' -v OFS='","' -v q='"' '{=q ; $NF=$NF q}1' file
"A","B","C","D","E","F"
惯用的 awk 解决方案是告诉 awk 输入字段分隔符 (FS) 是什么以及您希望输出字段分隔符 (OFS) 是什么,然后简单地更新一个字段,以便 awk 将所有 FS 转换为 OFS。
所以可能是这样的:
$ awk -F'|' -v OFS='","' '{=; print "\"" [=10=] "\""}' file
"A","B","C","D","E","F"
或者这个:
$ awk -F'|' -v OFS='","' '{=; gsub(/^|$/,"\"")} 1' file
"A","B","C","D","E","F"
或@karakfa 的替代方案或其他各种类似的解决方案。
我有一个文件
A|B|C|D|E|F
我需要像
这样的输出"A","B","C","D","E","F"
我做到了:
awk -f'|' '{print ,,}'
这给我的输出只有空格。我的问题是如何使用引号获得逗号分隔的输出,以及如何在不键入 '{print ,,......}'
我能做到:
awk -f'|' '{print """"""""","""""""""","""""""""..}'
但是不行。
要指定字段分隔符,您必须使用-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/\([^|]*\)/""/g;y/|/,/' infile
"A","B","C","D","E","F"
这会用引号将所有非竖线字符序列括起来,然后用逗号替换所有竖线。
awk -F"|" '{print "\""$1"\","""\""$2"\",""\""$3"\""}'
另一个awk
$ awk -F'|' -v OFS='","' -v q='"' '{[=10=]=q [=10=] q; =}1' file
"A","B","C","D","E","F"
字段分隔符由 awk
自动处理,只需要第一个和最后一个字段的帮助。等价地,
$ awk -F'|' -v OFS='","' -v q='"' '{=q ; $NF=$NF q}1' file
"A","B","C","D","E","F"
惯用的 awk 解决方案是告诉 awk 输入字段分隔符 (FS) 是什么以及您希望输出字段分隔符 (OFS) 是什么,然后简单地更新一个字段,以便 awk 将所有 FS 转换为 OFS。
所以可能是这样的:
$ awk -F'|' -v OFS='","' '{=; print "\"" [=10=] "\""}' file
"A","B","C","D","E","F"
或者这个:
$ awk -F'|' -v OFS='","' '{=; gsub(/^|$/,"\"")} 1' file
"A","B","C","D","E","F"
或@karakfa 的替代方案