タグ付けされた質問 「grep」

ファイル内のテキストパターンを検索するコマンドラインツールであるgrepに関する質問。このタグは、grep自体に関する質問、またはgrepコマンドラインツールの使用から生じる問題に関する質問に使用します。

6
与えられたパターンのセットから、パターンで始まらない行を削除します
次のようなデータを含むファイルがあります。 report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 質問:次の文字列で始まらない行を削除したい: report -th -to つまり、desired出力は、これらの中間の不要なドットとハッシュをすべて削除し、次のようになります。 report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/ etc機能するソリューション。

3
GNU grep -PでPerl互換の正規表現を使用する
(?<=\[')[^,]*次の行を含むファイルでこの正規表現を使用していますdisk = ['OVS/sdasd/asdasd/asdasd/something.img, w'] 戻って欲しい OVS/sdasd/asdasd/asdasd/something.img grepそれを機能させるにはどうすればよいですか? 私は試しましたgrep -P "(?<=\[')[^,]*"が、それは行全体を返します。


2
縦棒の作り方| grepで動作しますか?
これが私が試したgrepコマンドラインの例です: grep '(565172|565173|565175)' /var/log/cups/error_log 3つの値すべてがファイルに複数回存在する場合でも、出力は生成されません。 私はバーをエスケープしてみましたが、それによって状況が多少改善されました-真ん中の値が検出されましたが、最初または最後ではありませんでした。 grep '(565172\|565173\|565175)' /var/log/cups/error_log 私もダブルエスケープを試してみましたが、結果が出ませんでした。 grep '(565172\\|565173\\|565175)' /var/log/cups/error_log 何が悪いのですか?ありがとう。
10 grep 

1
リモートからサーバーをテストし続けるシェルスクリプトを書き込もうとしたが、ログアウトするとelseステートメントに落ち続ける
サーバーをテストし続け、サーバーがダウンしたときにメールで通知するシェルスクリプトをここに記述しようとしています。 問題は、ssh接続からログアウトすると&、のようにコマンドの最後で実行したにもかかわらず./stest01.sh &、自動的に他の場所に分類され、再度ログインして強制終了するまで中断なくメールを送信し続けることです。 #!/bin/bash while true; do date > sdown.txt ; cp /dev/null pingop.txt ; ping -i 1 -c 1 -W 1 myserver.net > pingop.txt & sleep 1 ; if grep "64 bytes" pingop.txt ; then : else mutt -s "Server Down!" myemail@address.com < sdown.txt ; sleep 10 ; fi …

8
特定の列に特定の値を持つ行をgrepする方法は?
次のようなファイルがあります 200.000 1.353 0.086 200.250 1.417 0.000 200.500 1.359 0.091 200.750 1.423 0.000 201.000 1.365 0.093 201.250 1.427 0.000 201.500 1.373 0.093 201.750 1.432 0.000 202.000 1.383 0.091 202.250 1.435 0.000 202.500 1.392 0.087 202.750 1.436 0.000 203.000 1.402 0.081 203.250 1.437 0.001 203.500 1.412 0.073 204.000 1.423 0.065 204.500 …
9 awk  grep 

2
Grepで正しい行を見つけ、sedで内容を変更してから、元のファイルに戻しますか?
ファイルの特定の行の1つの単語を変更しようとしていますが、すべてを一緒に接続するのに問題があります。 基本的に、ファイルの1行に「firmware_revision」というキーワードがあり、この行(およびこの行のみ)に「test」という単語を「production」という単語に置き換えたいと思います。 だから私はこれを行うことができます: grep 'firmware_revision' myfile.py | sed 's/test/production' これにより、必要な行が選択され、置換が実行されますが、この新しい行を元のファイルに入れて古い行を置き換える方法がわかりません。ファイルにリダイレクトすることはできないので、どうすればよいですか? 一時grepファイルを使用していても、を使用して必要な行だけを取得すると、ファイル内の他のすべてのデータが失われるため、すべてを一時ファイルにリダイレクトして元のファイルを一時ファイルに置き換えることはできなくなります。 編集-誰かが詳細情報を求めました このような行でいっぱいのファイルがあるとしましょう [ ('key_name1', str, 'value1', 'Description'), ('key_name2', str, 'value2', 'Description'), ('key_name3', str, 'value3', 'Description'), ('firmware_revision', str, 'my-firmware-name-test', 'Firmware revision name') ] ここで、「firmware_revision」を含む行を検索し、その行の「test」という単語のすべてのインスタンスを「production」に変更するスクリプト(理想的には1行)を記述したいと思います。「テスト」という単語がそのファイルの他の場所にある可能性があり、それらを変更したくありません。明確にするために、上の行を ('firmware_revision', str, 'my-firmware-name-production', 'Firmware revision name') どうすればよいですか?


5
複数のファイルで最後に出現する文字列を見つける
文字列の最後の出現を見つけるには、複数のログファイル(過去24時間に生成されたすべてのファイル、すべて同じディレクトリに保存されている)を検索する必要があります。これは私が書いたコマンドです: find . -mtime 1 | grep fileprefix | xargs grep 'search string' | tail -1 しかし、これは1つのファイルの最後の行のみを返します。これを調整してすべての行を取得する方法に関する提案はありますか?

3
このコマンドが機能しないのはなぜですか。「ps aux | grep xscreensaver」
グーグルでこれに関するヒットを見つけなかったので、私はあなたに尋ねています: 私はこのコマンドをsshセッションで実行しようとしました。ローカルはDebian Wheezy KDE、リモートはFedora 21 Gnomeです。 ps aux | grep xscreensaver そしてこれは出力です: bash: grep: command not found... 私はこれを今まで見たことがありません、原因は何ですか? システムを更新する数時間前に私は削除するようにマークされたパッケージを確認しませんでした。システムには2人のユーザーしかいないので、私だけがソフトウェアをインストールまたは削除します。 編集#1 コピーされたコマンドと出力は次のとおりです。スペースが2回目にないことに注意してください。 [root@Hostname ~]# ps aux | grep xscreensaver bash: : command not found... [root@Hostname ~]# ps aux | grep xscreensaver bash: grep: command not found...

4
grepを使用して固定数の文字で文字列を照合する
を6使用してすべての文字の単語を検索しようとしていますgrep。私は現在これを持っています: grep "^.\{6\}$" myfile.txt :しかし、私はまたのような結果を取得していますことを発見していますétuis、étude。 e上記の言葉の上の記号に何か関係があると思います。 これが起こらないようにするために私ができることはありますか? ご協力いただきありがとうございます!

5
grepで正確な文字列を見つける
例として、私は多くのメールアドレスを含む大きなテキストファイルを持っています。bashを使用して、メールが存在する(または存在しない)ことを検索/確認する必要があります。「アンカー」(のみ)を使用する必要がありますか? grep '^user1@example.com' text_file またはより良い方法がありますか?bashスクリプトを作成する必要があり、安全を確保したいのですが。
9 grep 

1
grep --colorはANSIコードESC [Kを追加します-これは表示されたテキストを変更する可能性があります
grepがANSIコード\e[Kをカラー出力に追加するのはなぜですか?私はそれの要点を見ることができませんが、明らかに開発者は見ることができます。これは、「現在のカーソル位置から行末までの行をクリアする」ために使用されるANSI / VT100端末コードです。 フリンジの場合、grepは端末のディスプレイからテキストを「消失」させる可能性があります。例えば: echo -e "ab\rc" echo -e "ab\rc" |grep --color=always "c" シンプルなエコー表示されますcbが、色付け表示ショー:c 基礎となるエンコードされたテキストは次のとおりです。echo -e 'ab\r\033[01;31m\033[Kc\033[m\033[K' ただし、\e[Kコードが なければ、echo -e 'ab\r\033[01;31mc\033[m'期待どおりに機能します。 grepがこれらの\e[Kコードを含める理由は何ですか。私はのオーバーレイを可能にするためのスクリプトを書いている二彩色パスのように、: c=--color=always; ls $c /bin/gzip | grep $c 'z'。したがって、grepが使用する理由を理解する必要があります\e[K。
9 terminal  grep  colors 

1
特定の長さ以下の単語のgrep
i log for E M, i 1 f x i 0, I xi 1, 3 1,.文字数に基づいて単純にgrepする方法を探しています。 この架空の出力では、3文字を超えるものはありません。この架空のワンライナーは次のようになりgrep -v [:alnum:] > {3}ます。(ただし、それをgrep構文で記述する方法がわからないだけです。)

5
文字列の一部を認識しながら文字列を検索し、文字列を返す
たとえば、文字列があります "Icecream123 AirplaneBCD CompanyTL1 ComputerYU1" 私の文字列には必ず部分文字列IceCreamが含まれていることはわかっていますが、その後に何があるかわかりません。 それは私の例のように123かもしれませんし、何か違うかもしれません。 次のコマンドを使用して、grepを使用して文字列に「Icecream」サブストリングが存在するかどうかを検出できますが echo $string | grep -oF 'Icecream'; どちらが印刷されます Icecream 部分文字列全体を出力するコマンドを使用したいのですが、私の例では Icecream123 もちろん、アイスクリームに続くものはランダムで事前にわかっていないので、私はただ行うことができません $SUBSTRING=$(echo $string | grep -oF 'Icecream') $SUBSTRINGTRAIL=123 echo $SUBSTRING$SUBSTRINGTRAIL

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.