sedを使用して、1行の別の文字の前にある文字を置き換えます。

sedを使用して、1行の別の文字の前にある文字を置き換えます。

私は/opt/tin/tossのいくつかの行を置き換えるためにsedなどを使ってみました。 *

例えば

37 7 * * * /opt/tin/toss
43 7 * * * /opt/tin/te1
58 7 * * * /opt/tin/test2

出力:

37 * * * * /opt/tin/toss
43 7 * * * /opt/tin/te1
58 7 * * * /opt/tin/test2

通常、7はランダムに生成され、0から24までの2、4、または8のいずれかです。

答え1

sed '/\/opt\/tin\/toss/ s/^\([^ ]* \+\)[^ ]*\( .*\)$/\1*\2/'

次のように読むことができます。

可能であれば、/opt/tin/toss一致するパターンを交換してください。

^行の始まり、その後

\([^ ]* \+\)

\(任意の数の文字で構成される最初のグループ[^ ]*(最大1つ以上のスペース)\+、次のグループの終わり\)

[^ ]*

次は[^ ]*宇宙まで何でも来る

\( .*\)

\( .*\)$その後、一致する2番目のスペースセットが続き、最後まですべてが続きます。

そして

/\1*\2/

最初のグループ、次に*2番目のグループ。

答え2

sedの例

sed  's/^\([0-9]*\) [0-9]*  *\(\*  *\* *\*  *\/opt\/tin\/toss.*\)$/\1 * \2/'

これは\([0-9]*\)最初の数字と一致し、値を保持します。\1

これは\(\* *\* *\* *\/opt\/tin\/toss.*\)コマンドラインの最後の3つの星と一致し、その値を保持します。\1

関連情報