2017-01-17 10 views
1

を使用して置き換えます。これは私の最初の質問です。私は検索しましたが、私が探しているものを見つけることができません。Mac OS X Unixは正規表現

データベースからエクスポートされた膨大な量のテキストがあります。特定の属性の内容については、スペースの各インスタンスを大文字に続けて検索し、そのスペースをセミコロン(;)に置き換える必要があります。

例えば:

First one Second one Third one Fourth one 

はなるはずです。

First one;Second one;Third one;Fourth one 

のUnixする(Mac OS X)を使用するだけで、全行を返す次:

echo "First one Second one Third one Fourth one" | grep ' [A-Z]' 

私は達成する方法を私の希望する結果はどうですか?どのような助けや指針も非常に高く評価されます。おかげさまで そのようなタスクのための

答えて

1

使用sed

$ echo "First one Second one Third one Fourth one" | sed -Ee 's/ ([A-Z])/;\1/g' 
First one;Second one;Third one;Fourth one 
  • -Eオプションは、拡張正規表現を使用するように指定されています。

  • s/pattern/replace-string/gパターンを検出し、置き換える文字列をG lobally置き換えます。
  • [A-Z]は大文字のアルファベットと一致します。 (..)でパターンを囲むことによって、後でreplace-stringで参照することができます。
+0

パーフェクト!非常に迅速な対応をいただきありがとうございます。私はawkとtrに刺すが、sedはしなかった! – intoto

+0

申し訳ありませんが、ちょうど見つかった... "1"は何をしますか? – intoto

+0

'\ 1'は最初のグループ('(...) 'で囲まれたパターンの部分)を逆参照します – falsetru