複数行にまたがる文字列をgrepで検索したいときには、 perlの正規表現が使えるpcregrepが便利です。 インストール CentOS6には標準でインストールされていますが、 CentOS7やAmazonLinuxの場合は、 pcregrepが含まれるpcre-toolsパッケージをインストールしてください。
LinuxやMacを使っていて、tail -Fやcatを使用時に特定のキーワード(例えばerrorとか)だけをハイライト表示させたい時がある。 だからと言っても、そのキーワードのある行だけが表示されるのは困り、全ての行を表示させたい。 1.grepコマンドを使う そんな時でも、grepコマンドで対応することができる。 以下のように、「$(行末)」を指定しコマンドを実行することで、全ての行を表示させつつ対象のキーワードをハイライトさせることができる。 コマンド | grep --color=auto -e '$' -e 'キーワード' もしくは コマンド | grep -E --color=auto 'キーワード|$' キーワードを複数指定する場合、「-e」でつなげていくか、egrep方式であればパイプでつなげていけばいい。 以下、CentOS 7でやってみた結果がこちら。 なお、色を変更す
/usr/local/bin にある #!/usr/bin/python3 をみつけたい、場面です。 こんな感じ。 find /usr/local/bin -type file | xargs awk '/python3/ {print FILENAME} {nextfile}' 1行目だけ検査したらさっさと nextfile で次に移るので OK というわけ。 nextfile Stop processing the current input file. The next input record read comes from the next input file. FILENAME and ARGIND are updated, FNR is reset to 1, and processing starts over with the first pattern in the
「確かに人事にはLinuxができる人が欲しいとは言ったが、まさか顔合わせでcurlとgrepでプリキュア全員の名前を端末で出力するような奴が来るとは思わなかった。」 — ぐれさん (@grethlen) 2014, 10月 21 クローラー/Webスクレイピング Advent Calendar 2015の7日目です。 IT企業を志望する就活生の方々は「FizzBuzzで100まで数えろ」とか「素数を表示しろ」とかいきなり言われても、得意な言語でならサクッと実装できるスキルは身につけておきたいですね。いつ面接で聞かれるかわかりません。 そして当然のごとく「プリキュア全員表示しろ」と言われても対応できるようにしておくべきでしょう。文字列処理、Webスクレイピングの基本が身についているかどうかがこの問い一つでわかります。面接で既に出題された方も少なくないのでは? そこで、いくつかのアプローチでW
今時EUCのファイルなんて殆ど使わないが、grepせざるをえなくなったのでメモ。 コンソールはUTF8なのでそのままだとgrepできない。 ただ、やることは単純でnkfで検索したい文字をeuc-jpにしてファイルをgrep。 そして結果をUTF8にしているだけ。 ただし、LANG=ja_JP.eucjpにしないとeuc-jpでgrepができないので注意。 ちなみにgrepのバージョンは2.6。 ENVIRONMENT VARIABLES The behavior of grep is affected by the following environment variables. The locale for category LC_foo is specified by examining the three environment variables LC_ALL, LC_foo, L
GNU grep 2.22が近日中にリリースされる見込みとなりました。 GNU grep 2.22は、結果不正バグが見つかったことによるバグフィックスリリースです。そのため、目立った改善点はありませんが、それらを見ていくとともに、今後の見通しについて紹介します。 GNU grep 2.22における改善/バグフィックス 結果不正バグの修正 下記のパターンは、「hello」が行頭または行末に含まる行にマッチしますが、行内に「hello」が含まれているものにマッチしてしまっています。 $ echo aaahellobbb | grep -E '^hello|hello$' aaahellobbbこのバグは、GNU grep 2.19で行頭や行末にマッチさせる正規表現の高速化が行われた際に混入したものです。 バッファオーバーランの修正 固定文字列を検索をする時は、最初にパターンの最後の文字を検索し
今でも、 systemdのjournal におけるバイナリのストレージフォーマットに関して、不満を漏らす人が多くいることに私は驚きを隠せません。私は長年、システム管理者として働いてきており、1年以上も syslog-ng の オープンソースエディションのメンテナ として活動してきました。だからこそ、テキストではないストレージフォーマットに対して、なぜ多くの人が批判的なのか、私は理解に苦しんでいます。更に、反論を唱える人までいることが信じられません。もしかしたら、私は別世界の人間なのかもしれません。ですが、より良い選択肢があるのに、テキストのストレージを使う理由はほとんどありません。ロギングをする必要性、そしてなぜ、テキストのログストレージに対してそこまで用心深いのかについて、私は何度も尋ねられました。ここに、私が導き出した答えを紹介したいと思います。 これは、journalについて弁明する
ファイルの中身を文字列で検索することができるユーティリティ「grep」は、コンピューターを扱う上で、なくてはならないツールといっても過言ではないかもしれません。grepは長い歴史を持つツールで、それ自体少しづつ改良さてきていますが、最近はもっと積極的に高速性を追求したgrep的なツールも開発されてきています。 今回紹介する「grab」もその中の一つ。複数コアを使った検索の並列化や(ただしほとんどの場合遅くなるらしい)、mmapとMAP_POPULATEの使用、PCREのJIT機能などを使った高速化の技法を組合せ、SSD上で100%の劇的なパフォーマンスの向上を成し遂げたということです。 しかしさらに上手が… Hacker Newsで「grab」の話題が取り上げられた後、高速化grepの先駆者、「The Silver Searcher」(コマンド名ag)の作者が自らベンチマークを行い、gra
筆者について FreeBSDを通じてOSSにささかな貢献を。 日本xrdpユーザ会発起人 xrdp developer FreeBSD developer OSS活動をご支援いただける方を募集しています https://github.com/sponsors/metalefty ■ yum コマンドの出力は grep してはいけない (grep するには向いていない) grep してはいけないわけではないですが、yum コマンドの出力は grep するには向いていません。 普段は FreeBSD ばかりで久々に Linux を触っていたらハマったので備忘のために。 yum コマンドは RHEL 系の Linux ディストリビューションで、パッケージをあれやこれやするためのコマンドですが、とても人にやさしくできているために、人がそのまま目で見る以外の用途、シェルスクリプトの中で加工したり g
$ grep --color=auto foo * colorオプションで該当部分やファイル名などを色づけする。 環境変数GREP_OPTIONSを設定すると、コマンド実行時に設定したオプションが適用される。 # ~/.bashrc export GREP_OPTIONS='--color=auto' # 実行時に--color=autoが適用される $ grep foo * GREP_OPTIONSを設定している状態でgrepコマンドにcolorオプションを指定すると、コマンドのオプションが適用される。 # GREP_OPTIONS='--color=auto' を設定していても--color=neverが適用される $ grep --color=never foo * colorオプションには、never(色をつけない)、auto(可能なら色をつける)、always(いつでも色をつける
なんて打ってる人がいたら、aliasの存在を教えてあげよう。(大抵は"ll"で登録してある) aliasの内容は、~/.bashrcか~/.bash_aliasesで定義しておけばターミナル起動時から有効になる。 ぼくの.bash_aliases # Enable color support of ls and also add handy aliases if [ -x /usr/bin/dircolors ]; then alias ls='ls --color=auto' #alias dir='dir --color=auto' #alias vdir='vdir --color=auto' alias grep='grep --color=auto' alias fgrep='fgrep --color=auto' alias egrep='egrep --color=auto'
アクセスログなど流速が早いログをtail -fしているときに特定文字列を見ておきたいときがあります。 grepしてもいいんだけど、それだと見逃すログがあるためlessコマンドで実現します。
Unix系で使われるgrepに近いコマンドはないかと探したところSelect-Stringというコマンドがありました。 凝った使い方だと違いますが、概ねgrepの様にしていいようです。 CSVファイルに「D00」を含む行だけを表示させてみました。
最近GNU grepコマンドの最新バージョンがリリースされ、速度が10倍になったとのアナウンスがあった。それを聞いて、なんであんな枯れた技術に10倍もの高速化の余地があったのだろうと不思議に思った人も多いだろう。 ニュース記事:grepコマンド最新版、”-i”で10倍の高速化 本家のリリースノート:grep – News: grep-2.17 released [stable] 今回のリリースでは正確には、マルチバイトロケールで、-iオプション(–ignore-case、つまり大文字小文字を区別しないオプション)をオンにした時の速度が10倍くらいになったそうだ。 なぜそんなに速くなったのか?逆を言えば今までなぜそんなに遅かったのか? そもそも、多くの日本人にとって「大文字小文字の区別」というと英語のアルファベットか、せいぜいフランス語とかドイツ語とかのアクサン記号・ウムラウトがついたものく
GNU Projectのgrep開発チームは2月17日、最新安定版「grep-2.17」をリリースした。パフォーマンスの向上が行われており、「10倍の高速化」が実現されているという。 grepはファイルから特定のパターンを検索するツールで、「global regular expression print」の略。正規表現による検索も可能で、多くのUNIX系システムで使われているほか、Windowsでも動作する。 grep 2.17は1月初めに公開されたバージョン2.16に続く安定版。7週間で8人の開発者より合計19のコミットがあったという。最大の特徴は性能。バッファモードの活用などにより、マルチバイト文字列に対し-iオプションを利用し、\または[が含まれていないパターンを検索する際の速度が10倍高速になったという。-iオプションを利用しない場合は、最大7倍程度の改善が可能だそうだ このほかg
いまや高速パターン検索といえばag(The Silver Searcher)ですが、検索対象がUTF-8のテキストを前提としているため、EUC-JPやShift-JISといったファイルを検索するのに課題があります。 これまで、それらの日本語文字セットを検索できるようにするため、色々とagの改造、公開を行っていました。 ag(The Silver Searcher)でEUC-JP/Shift-JISのファイルも検索できるようにしてみた 日本語圏特化型ag -白金- の配備が完了しました しかし、特定の国の文字コードだけに特化した修正というのをmasterに取り込んでもらうわけにもいかず、派生ブランチとして追随するのも、やはり面倒… そこで年始にGo言語を触ったのをきっかけに、Go言語でパターン検索ツールをつくってみました。 せっかくなのでポストagを目指して、プラチナサーチャー(The Pl
機会があったので、調べてみました。 2ファイルの差分はdiffコマンドで取るけど、その逆の共通している部分はどうやって取得するのか。エレガントなやり方はやっぱりgrepコマンドを使うのかしら? 前提 $ diff -c5 {a,b}.txt *** a.txt 2013-08-28 18:54:49.293055071 +0900 --- b.txt 2013-08-28 18:53:58.517693404 +0900 *************** *** 1,6 **** 1 - 2 3 5 5 6 --- 1,6 ---- 1 3 + 4 5 5 6こういう2つのファイルがあったとして・・・ grepで $ grep -x -f {a,b}.txt 1 3 5 5 6grepコマンドの"-x"オプションを使うと、こんな感じで、2ファイルの共通部分が出力される。 -x, --line
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く