スペースで区切られた単語の周りに引用符と新しい区切り文字を追加します。

スペースで区切られた単語の周りに引用符と新しい区切り文字を追加します。

次の文字列があります

y10_zcis y10_nom y10_infl y20_zcis y20_infl y30_zcis

に変身したい

"y10_zcis", "y10_nom", "y10_infl", "y20_zcis", "y20_infl", "y30_zcis"

私は非常に醜い方法で同様のことを達成しました。

$ cat in.txt | sed 's/ /\'$'\n/g' | sed 's/\(.*\)/"\1",/g' | tr -d '\n'


"y10_zcis","y10_nom","y10_infl","y20_zcis","y20_infl","y30_zcis",

しかし、これは完全に失敗したように感じられ、必要とされない最後のコンテンツを処理しません,(しかし、事実の後に削除する方が良いかもしれません)。

ベストアンサー1

あなたはできます

sed -e 's| |", "|g' -e 's|^|"|g' -e 's|$|"|g' in.txt

どこ

  • 's| |", "|g'すべてのスペースを置き換えます", "
  • 's|^|"|g'最初はスペースがなくても行の^先頭に指定する必要があるため、"最初に通知します。
  • 's|$|"|g'同じですが、各行の終わりを指定してください。$

修正する

@don_crisstiが指摘したように、以下を使用して時間を短縮できます。

sed 's| |", "|g;s|.*|"&"|'

どこ

  • ;各命令を分離
  • .*全体の行と一致します。
  • &この場合、右側のアンパサンドは左側から一致する完全な式に置き換えられます。.*

    RHS=右

    LHS=左

おすすめ記事