一重引用符/二重引用符で囲み、カンマで終わりたいです。ただし、最後のレコードであるため、最後の行にカンマを含めないようにすることも必要です。
同じ要件を持つ複数の投稿が見つかりましたが、最後の行を除外した投稿が見つかりませんでした。
以下は私が保存したサンプルデータです。/tmp/x
ANONYMOUS
APEX_040200
APEX_PUBLIC_USER
APPQOSSYS
AUDSYS
以下では、目的の出力は一重引用符で囲まれています。後で二重引用符を使用する必要があります。
'ANONYMOUS',
'APEX_040200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
'AUDSYS'
次のように使用できますが、最後の行を一重引用符/二重引用符で囲むようにする方法がわかりません。しかし、カンマはありません。。
awk '{ printf "'\''%s'\'',\n", $0 }' /tmp/x ## single-quote
awk '{ printf "\"%s\",\n", $0 }' /tmp/x ## double-quote
したがって、結果の出力は次のようになります。最後のレコードのカンマを参照してください。
"ANONYMOUS",
"APEX_040200",
"APEX_PUBLIC_USER",
"APPQOSSYS",
'ANONYMOUS',
'APEX_040200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
,
最後の行の末尾を抑制する方法は何ですか?
ベストアンサー1
awkを使用してください。
$ awk -v q=\' -v ORS= '{print s q $0 q; s=","RS} END{print RS}' file
'ANONYMOUS',
'APEX_040200',
'APEX_PUBLIC_USER',
'APPQOSSYS',
'AUDSYS'
または、単一引用符の代わりに二重引用符を使用するには、次のように変更-v q=\'
します-v q=\"
。
$ awk -v q=\" -v ORS= '{print s q $0 q; s=","RS} END{print RS}' file
"ANONYMOUS",
"APEX_040200",
"APEX_PUBLIC_USER",
"APPQOSSYS",
"AUDSYS"