必要に応じて:
<ブロック引用>これを既存のスクリプトに追加してください。
追加の \"\"
を挿入できます print
の各引数に このように:
print "\"admin\"", "\"base\"", ...
編集済み:
はい、おそらく OFS を設定する方が良い解決策です:
BEGIN { OFS="\";\""; } ... print "\"admin", ...., "simple\"";
awk '{for (i=1;i<=NF;i++) $i="\""$i"\""}1' FS=";" OFS=";" input
エントリを引用符で囲むには、単純な AWK ループを使用できます:
スクリプト - simple_loop.awk
BEGIN {FS=";"}
{
for(i=1;i<NF;i++){
printf("\"%s\";", $i);
}
printf("\"%s\"\n",$NF);
}
例えば
echo "admin;base;5.11 HOLSTER SHIRT L WHITE;;" | awk -f simple_loop.awk
出力すべき
"admin";"base";"5.11 HOLSTER SHIRT L WHITE";"";""
この場合、 sed
を使用します AWK の代わりの式。
データが data.txt
というファイルにある場合 、あなたはそれを書くことができます:
sed "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
それは結果を標準出力に出力しますが、ファイルの内容を置き換えたい場合は sed -i
を使用してください このように:
sed -i "s/;/\";\"/g;s/^/\"/;s/$/\"/" data.txt
以上です!!
説明: sed
式は 3 つの sed
で構成されます 「;」で区切られたコマンド個別に実行できます:
sed "s/;/\";\"/g
置換を行い (つまり、最初の "s" を意味します)、次に "/" (デフォルトの区切り文字)、";" です。それが私たちが置き換えたいものです。次に、2 番目のセパレーター「/」、および置換:\";\"
これは、エスケープされた引用符、セミコロン、およびエスケープされた引用符のシーケンスです。したがって、このコマンドでは、セミコロン ;
を置き換えます ";"
で .最後の /g
各 ;
を意味します 置き換えられます (最初のスミコロンだけではありません)。
入力が a;b;c
の場合 これが最初のコマンドを実行した後、それは a";"b";"c
になります .
ここで、最初に引用符を追加する必要があります (^
正規表現で) と最後に ($
)。それが意味することです:
sed "s/^/\"/" // the first quote
そして
sed "s/$/\"/" // the last quote
目的の出力を得る:
"a";"b";"c"