2017-01-10 4 views
1

イムある「Hihihihihihihiを!」、任意に多くの「HIのegrepの結果は、単一の発生は何も含まれていない行のegrepしようとしている現在のコマンドとgrabage

でここで私は

egrep "^Hi(hi)*!$" myfile.txt 

書いたものですが、それはうまくいかなかった。 を入力して押した後、コマンドが再び表示されました:

egrep "^Hi(hi)*myfile.txt" mayflies.txt 

誰もが私を助けることができますか?

ありがとうございます!

+0

実際にあなたのコマンドを再度表示するか、代わりに 'egrep"^Hi(hi)* myfile.txt "myfile.txt'を表示しますか? –

+0

ああ申し訳ありません。それは実際にegrep "^ Hi(hi)* myfile.txt"を表示しますmayflies.txt私はそれに気付かなかった –

答えて

3

シェルは、前の称賛の最後の引数を代入する!$を解釈している:私は$は何か、どのようなわからないようBASHによって解釈されていると思います。

これらのシェル置換を無効にするには、二重引用符を一重引用符に変更します。

egrep -x "Hi(hi)*!" myfile.txt 
+0

これはテストしましたか?私のテストでは、一重引用符では引用符が足りないことが示されています。バックスラッシュが必要です。 – MAP

+0

@MAPうん、ここでうまくいく。 'egrep '^ Hi(hi)*!$' myfile.txt' – Kundor

+0

ありがとう!それはうまくいく! –

1

一重引用符で試してください。

egrep '^Hi(hi)*!$' myfile.txt 
+0

これはテストしましたか?私のテストでは、一重引用符では引用符が足りないことが示されています。バックスラッシュが必要です。 – MAP

+0

しました。 Ubuntu/BASHではうまく動作します。 –

+0

ありがとう!それはうまく動作します! –

2

あなたはドン」:

egrep '^Hi(hi)*!$' myfile.txt 

また、あなたは^$文字の必要がなくなるので、致命的な!$引数置換を避け、唯一の全体のラインを一致させるために-xスイッチを使用することができますどのシェルを使用しているかはわかりませんが、問題はシェルに特別な感嘆符(!)があることです。

egrep "^Hi(hi)*\!$" myfile.txt 

それは本当であるところでほとんどのシェルで動作するはずです。

二重引用符を一重引用符に変更するだけではすべてのシェルでは不十分ですが、感嘆符は一重引用符で囲まれたままです。私はtcshでこれをすべてテストしましたが、他のシェルには違いがあります。

+0

ありがとう!それはうまく動作します〜 –

関連する問題