タブ区切りまたはコンマ区切りのテキスト ファイル内のすべてのフィールドを二重引用符で囲む、すばやく効率的な方法を探しています。
理想的には、これはコマンドラインから実行できる Perl のワンライナーですが、私はあらゆる種類のソリューションに対してオープンです。
タブ区切りまたはコンマ区切りのテキスト ファイル内のすべてのフィールドを二重引用符で囲む、すばやく効率的な方法を探しています。
理想的には、これはコマンドラインから実行できる Perl のワンライナーですが、私はあらゆる種類のソリューションに対してオープンです。
使用Text::CSV
:
perl -MText::CSV -e'
my $c = Text::CSV->new({always_quote => 1, binary => 1, eol => "\n"}) or die;
$c->print(\*STDOUT, $_) while $_ = $c->getline(\*ARGV)' <<'END'
foo,bar, baz qux,quux
apple,"orange",spam, eggs
END
出力:
"foo","bar"," baz qux","quux"
"apple","orange","spam"," eggs"
ここalways_quote
で重要なのはオプションです。
区切り文字を含む二重引用符で囲まれた文字列がファイルに含まれていない場合は、次を使用できます
perl -laF, -ne '$" = q(","); print qq("@F")'
awk -F, -v OFS='","' -v q='"' '{$0=q$0q;$1=$1}7' file
たとえば、コンマ区切り:
kent $ echo "foo,bar,baz"|awk -F, -v OFS='","' -v q='"' '{$0=q$0q;$1=$1}7'
"foo","bar","baz"
タブセップも同様です。