パターンの後に数字を見つけ、数字がxより大きい場合にファイルとして印刷する方法、

パターンの後に数字を見つけ、数字がxより大きい場合にファイルとして印刷する方法、

次のファイルがあります。

Thispeculiarpattern(1.00);thatpeculiarpattern(0.90);....
Thispeculiarpattern(0.73);thatpeculiarpattern(0.15);...................

Somerandomtext(0.81); somemorerandomtext(0.79):.................................
Somerandomtext(0.62); somemorerandomtext(0.04):..............
Herewegoagain(0.93);Herewegoyetagain(0.48);....
Herewegoagain(0.71);Herewegoyetagain(0.87);....

私は次の出力が欲しい:

Thispeculiarpattern(1.00);thatpeculiarpattern(0.90);....
Somerandomtext(0.81); somemorerandomtext(0.79):....
Herewegoagain(0.71);Herewegoyetagain(0.87);....

つまり、「Thispeculiarpattern」、「Somerandomtext」、または「Herewegoyetagain」が含まれている場合は、すべての行をファイルに出力したい場合、その後に0.8以上の括弧を付ける必要があります。

ベストアンサー1

すべての数値が固定小数点10進数であるとします(例を参照)。

grepを使う

$ grep -E '(Thispeculiarpattern|Somerandomtext|Herewegoyetagain)\(([1-9]|0\.[89])' file
Thispeculiarpattern(1.00);thatpeculiarpattern(0.90);....
Somerandomtext(0.81); somemorerandomtext(0.79):.................................
Herewegoagain(0.71);Herewegoyetagain(0.87);....

sedを使う

$ sed -En '/(Thispeculiarpattern|Somerandomtext|Herewegoyetagain)\(([1-9]|0\.[89])/p' file
Thispeculiarpattern(1.00);thatpeculiarpattern(0.90);....
Somerandomtext(0.81); somemorerandomtext(0.79):.................................
Herewegoagain(0.71);Herewegoyetagain(0.87);....

awkを使う

$ awk '/(Thispeculiarpattern|Somerandomtext|Herewegoyetagain)\(([1-9]|0\.[89])/' file
Thispeculiarpattern(1.00);thatpeculiarpattern(0.90);....
Somerandomtext(0.81); somemorerandomtext(0.79):.................................
Herewegoagain(0.71);Herewegoyetagain(0.87);....

どのように動作しますか?

すべての場合に正規表現に一致する行を探します。

(Thispeculiarpattern|Somerandomtext|Herewegoyetagain)\(([1-9]|0\.[89])

この正規表現は2つの部分に分けられます。最初のものは次のとおりです。

(Thispeculiarpattern|Somerandomtext|Herewegoyetagain)\(

上記は3つの文字列のうちの1つと一致し、その後に(

2番目の部分は次のとおりです。

([1-9]|0\.[89])

1から9までの数字で始まるすべての数字と一致します。または0.8またはで始まる数字0.9

おすすめ記事