1. ホーム
  2. string

[解決済み] 複数行の文字列をカンマで区切られた1つの文字列に変換する

2022-05-16 04:38:42

質問

次のような文字列があるとします。

something1:    +12.0   (some unnecessary trailing data (this must go))
something2:    +15.5   (some more unnecessary trailing data)
something4:    +9.0   (some other unnecessary data)
something1:    +13.5  (blah blah blah)

これをどうすれば簡単に

+12.0,+15.5,+9.0,+13.5

bashで?

どのように解決するのですか?

この場合 awksed :

awk -vORS=, '{ print $2 }' file.txt | sed 's/,$/\n/'

また、パイプを使う場合は

echo "data" | awk -vORS=, '{ print $2 }' | sed 's/,$/\n/'

分解してみると

  • awk は、フィールドに分解されたデータを扱うのが得意です
  • -vORS=, は、quot;出力レコードセパレータを , に設定します。これは、あなたが望んでいたものです。
  • { print $2 } 伝える awk に、すべてのレコード (行) の 2 番目のフィールドを表示するように指示します。
  • file.txt はファイル名
  • sed は、単に末尾の , )