愚かな質問かもしれませんが、私は初心者です。現在、csvファイルからフィールドを抽出するのに問題があります。理想的には、liタグと括弧内の3番目の列を使用して印刷したいと思います。私が得た最も近いもの
awk -F'\t' '{print "\"<li>$2($3)</li>\""}' OFS='","' datafile.csv
"<li>$2($3)</li>"
これにより、データを抽出せずに重複のみが発生します。
のみを使用すると、awk -F'\t' '{print "\<li>$2,($3)</li>\"}' OFS='","' datafile.csv
終了していない文字列エラーが発生します。
私が使用している場合:
awk '{print $1","$2","$4}' datafile.csv
スペースの代わりにカンマでほぼすべてを印刷します。
私が使用している場合:
awk '{print $2","$3"}' datafile.csv
私は得る:
awk: non-terminated string ,}... at source line 1
context is
{print >>> $2","$3"}
何が問題なのかよく分からない。を試してみましたcut
。
ベストアンサー1
TSVファイル内のタブ区切りの2番目と3番目のフィールドの<li>$2($3)</li>
場所$2
と場所を印刷したいようです。$3
さまざまな方法でこれを行うことができますが、最も明白な2つの方法は次のとおりです。
print "<li>" $2 "(" $3 ")</li>"
または
printf "<li>%s(%s)</li>\n", $2, $3
両方のバリアントには引用符$2
またはを含めません$3
。そうすると、参照する文字列ではなく$2
リテラル文字列が出力されます。$3
これが最初のコード部分の問題ですawk
。他の人は、不均衡な見積もりのために困難を経験します。
文字列の周囲に二重引用符を入れるには、次のようにします。
print "\"<li>" $2 "(" $3 ")</li>\""
または
printf "\"<li>%s(%s)</li>\"\n", $2, $3