blog

Linuxはどのようにしてファイル内の文字列を検索し、その文字列がある行とその次の行の内容を別のファイルに書き込むのだろうか?

ファイル内の文字列を検索する もし現在の bai ディレクトリで "chen" という文字列を見つけたい場合、次のようにします:[hadoop@hadoop101opt]$ grep -rn "che...

Nov 9, 2020 · 3 min. read
シェア






ファイル内の文字列を検索
現在のbaiディレクトリで "chen "という文字列を見つけたい場合は、次のようにします。
[hadoop@hadoop101 opt]$ grep -rn "chenyuan" *
* : は、すべてのファイルのカレントディレクトリを示すが、ファイル名を指定することもできる
-r は再帰的検索である。
-n  番号を表示する
-R サブディレクトリを含むすべてのファイルを検索する
-i ケースを無視する
ここに興味深いコマンドライン引数がある:
grep -i pattern files 大文字と小文字を区別せずに検索する。デフォルトは大文字と小文字を区別する。,
grep -l pattern files 一致するファイル名だけをリストアップする,
grep -L pattern files 一致しないファイル名をリストアップする。,
grep -w pattern files 文字列の一部ではなく、単語全体にマッチする。,
grep -C number pattern files 一致するコンテキストは別に示す[number]行,
grep pattern1 | pattern2 files : pattern1またはpattern2にマッチする行を表示する。,
grep pattern1 files | grep pattern2 : pattern1とpattern2の両方にマッチする行を表示する。


検索するための特別な記号をいくつか紹介します:
[hadoop@hadoop101 opt]$ sudo touch xl.txt
[hadoop@hadoop101 opt]$ sudo chown hadoop:hadoop ll.txt


次に同じ方法でll.txt、lll.txtを作成します。それぞれyuanic、yuanと書いてください。
\<   \> 単語の最初と最後に印をつける。
 
grep yuan* は'chenyuan'、'yuanic'、'yuan'などにマッチする。,
grep '\<yuan' * yuanic」と「yuan」にはマッチするが、「chenyuan」にはマッチしない。,
grep '\<yuan\>' 'yuan'にのみマッチし、'chenyuan'や'yuanicnic'のような他の文字列にはマッチしない。
'^': マッチする文字列が行頭にあることを意味する。,
'$'マッチする文字列が行末にあることを意味する。,


[hadoop@hadoop101 opt]$ grep -rn yuan *


[hadoop@hadoop101 opt]$ grep -rn '\<yuan' *




[hadoop@hadoop101 opt]$ grep -rn '\<yuan\>'






別のファイルへの書き込み
xl.txtの修正
[hadoop@hadoop101 opt]$ vi xl.txt 
chenyuan
xl
lala


空のll.txt


[hadoop@hadoop101 opt]$ grep -i "chenyuan" -A 1 xl.txt | grep -v -e "--" >ll.txt
[hadoop@hadoop101 opt]$ cat ll.txt 
chenyuan
xl




Read next

C++ 11 解説

ポインタ参照 void ポインタ *Tのポインタ、&Tのポインタ参照 ポインタ型 ポインタ ポインタがアドレスを指す、または文字または文字群である、または関数である ポインタ ポインタ割り当て 1.固定値を直接ポインタ変数にコピー 2.new演算子を使ってヒープからメモリブロックを確保 3.アドレス文字&を使って関数または関数のアドレスを取得

Nov 9, 2020 · 1 min read