正規表現に一致するコマンドラインコマンドにスペースを追加します。

正規表現に一致するコマンドラインコマンドにスペースを追加します。

テキストファイルで見つかった正規表現パターンが表示されるたびにスペースを追加したいと思います。

例:

xadsfa 1 - 2 --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4 --- --- --- asdf

「1 -2」または「2 - 4」を一致させたい。私は次のようなパターンを思いついた。

[0-9]\s-\s[0-9]

では、次のように各一致にスペースを追加したいと思います。

xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf

ベストアンサー1

次のツールを使用すると簡単ですsed

$ sed 's/[0-9]\s-\s[0-9]/& /' file
xadsfa 1 - 2  --- --- --- AB
jklhwj 3 --- --- --- asdfh
weriulceh 2 - 4  --- --- --- asdf

この演算子は、入力ファイルの各行にs/foo/bar/最初に表示される部分を置き換えますfoobar合わせたいならみんな行が与えられたらg:を使用してくださいs/foo/bar/g。これは&「一致するコンテンツ」なので、s/[0-9]\s-\s[0-9]/& /最初に表示される正規表現は、一致するコンテンツにスペースを加えたものに置き換えられます。

タブや他のスペースではなく単一のスペースのみを一致させる場合は、スペースを使用する理由はありません\s

sed 's/[0-9] - [0-9]/& /' file

最後に、ファイル自体を変更するには、次のようにします。-i(これはGNUを仮定し、sed構文は他の実装とは若干異なります。また、ファイルをsed操作の結果に置き換えます。追加する前に必要な操作を実行していることを確認してください-i。):

sed -i 's/[0-9] - [0-9]/& /' file

おすすめ記事