Linuxç³»ç»çå¦ä¹ è¿ç¨ä¸ï¼ä¼è®¤è¯å¾å¤å½ä»¤ï¼è®°ä½è¿äºå½ä»¤ä¼å¯¹ä½ å¦ä¹ Linuxç³»ç»ï¼æå¾å¥½çæé«ãä½ å¯è½ä¼çå°grepå½ä»¤ï¼è¿éå°ä»ç»grepå½ä»¤çç¥è¯ã1.ä½ç¨
Linuxç³»ç»ä¸grepå½ä»¤æ¯ä¸ç§å¼ºå¤§çææ¬æ索工å
·ï¼å®è½ä½¿ç¨æ£å表达å¼æç´¢ææ¬ï¼å¹¶æå¹é
çè¡æå°åºæ¥ãgrepå
¨ç§°æ¯Global Regular Expression Printï¼è¡¨ç¤ºå
¨å±æ£å表达å¼çæ¬ï¼å®ç使ç¨æéæ¯ææç¨æ·ã2.æ ¼å¼
grep [options]3.主è¦åæ°
[options]主è¦åæ°ï¼
ï¼cï¼åªè¾åºå¹é
è¡ç计æ°ã
ï¼Iï¼ä¸åºå大å°å(åªéç¨äºåå符)ã
ï¼hï¼æ¥è¯¢å¤æ件æ¶ä¸æ¾ç¤ºæ件åã
ï¼lï¼æ¥è¯¢å¤æ件æ¶åªè¾åºå
å«å¹é
å符çæ件åã
ï¼nï¼æ¾ç¤ºå¹é
è¡åè¡å·ã
ï¼sï¼ä¸æ¾ç¤ºä¸åå¨ææ å¹é
ææ¬çé误信æ¯ã
ï¼vï¼æ¾ç¤ºä¸å
å«å¹é
ææ¬çææè¡ã
patternæ£å表达å¼ä¸»è¦åæ°ï¼
\ï¼å¿½ç¥æ£å表达å¼ä¸ç¹æ®å符çåæå«ä¹ã
^ï¼å¹é
æ£å表达å¼çå¼å§è¡ã
$: å¹é
æ£å表达å¼çç»æè¡ã
\<ï¼ä»å¹é
æ£å表达å¼çè¡å¼å§ã
\>ï¼å°å¹é
æ£å表达å¼çè¡ç»æã
[ ]ï¼å个å符ï¼å¦[A]å³A符åè¦æ± ã
[ - ]ï¼èå´ï¼å¦[A-Z]ï¼å³AãBãCä¸ç´å°Zé½ç¬¦åè¦æ± ã
ãï¼ææçå个å符ã
* ï¼æå符ï¼é¿åº¦å¯ä»¥ä¸º0ã4.grepå½ä»¤ä½¿ç¨ç®åå®ä¾
$ grep âtestâ d*
æ¾ç¤ºææ以då¼å¤´çæ件ä¸å
å«testçè¡ã
$ grep âtestâ aa bb cc
æ¾ç¤ºå¨aaï¼bbï¼ccæ件ä¸å¹é
testçè¡ã
$ grep â[a-z]\{5\}â aa
æ¾ç¤ºææå
å«æ¯ä¸ªå符串è³å°æ5个è¿ç»å°åå符çå符串çè¡ã
$ grep âw\(es\)t.*\1â² aa
å¦æwest被å¹é
ï¼åes就被åå¨å°å
åä¸ï¼å¹¶æ 记为1ï¼ç¶åæ索任æ个å符(.*)ï¼è¿äºå符åé¢ç´§è·çå¦å¤ä¸ä¸ªes(\1)ï¼æ¾å°å°±æ¾ç¤ºè¯¥è¡ãå¦æç¨egrepægrep -Eï¼å°±ä¸ç¨â\âå·è¿è¡è½¬ä¹ï¼ç´æ¥åæâw(es)t.*\1â²å°±å¯ä»¥äºã5.grepå½ä»¤ä½¿ç¨å¤æå®ä¾
å设æ¨æ£å¨â/usr/src/Linux/Docâç®å½ä¸æ索带å符串âmagicâçæ件ï¼
$ grep magic /usr/src/Linux/Doc/*
sysrq.txt:* How do I enable the magic SysRQ key?
sysrq.txt:* How do I use the magic SysRQ key?
å
¶ä¸æ件âsysrp.txtâå
å«è¯¥å符串ï¼è®¨è®ºçæ¯ SysRQ çåè½ã
é»è®¤æ
åµä¸ï¼âgrepâåªæç´¢å½åç®å½ãå¦ææ¤ç®å½ä¸æ许å¤åç®å½ï¼âgrepâä¼ä»¥å¦ä¸å½¢å¼ååºï¼
grep: sound: Is a directory
è¿å¯è½ä¼ä½¿âgrepâçè¾åºé¾äºé
读ãè¿éæ两ç§è§£å³çåæ³ï¼
æç¡®è¦æ±æç´¢åç®å½ï¼grep -r
æ忽ç¥åç®å½ï¼grep -d skip
å¦ææå¾å¤è¾åºæ¶ï¼æ¨å¯ä»¥éè¿ç®¡éå°å
¶è½¬å°âlessâä¸é
读ï¼
$ grep magic /usr/src/Linux/Documentation/* | less
è¿æ ·ï¼æ¨å°±å¯ä»¥æ´æ¹ä¾¿å°é
读ãæä¸ç¹è¦æ³¨æï¼æ¨å¿
éæä¾ä¸ä¸ªæ件è¿æ»¤æ¹å¼(æç´¢å
¨é¨æ件çè¯ç¨ *)ãå¦ææ¨å¿äºï¼âgrepâä¼ä¸ç´ççï¼ç´å°è¯¥ç¨åºè¢«ä¸æãå¦ææ¨éå°äºè¿æ ·çæ
åµï¼æ <CTRL c> ï¼ç¶ååè¯ãä¸é¢è¿æä¸äºæææçå½ä»¤è¡åæ°ï¼
grep -i pattern files ï¼ä¸åºå大å°åå°æç´¢ãé»è®¤æ
åµåºå大å°åï¼
grep -l pattern files ï¼åªååºå¹é
çæ件åï¼
grep -L pattern files ï¼ååºä¸å¹é
çæ件åï¼
grep -w pattern files ï¼åªå¹é
æ´ä¸ªåè¯ï¼èä¸æ¯å符串çä¸é¨å(å¦å¹é
âmagicâï¼èä¸æ¯âmagicalâ)ï¼
grep -C number pattern files ï¼å¹é
çä¸ä¸æåå«æ¾ç¤º[number]è¡ï¼
grep pattern1 | pattern2 files ï¼æ¾ç¤ºå¹é
pattern1 æ pattern2 çè¡ï¼
grep pattern1 files | grep pattern2 ï¼æ¾ç¤ºæ¢å¹é
pattern1 åå¹é
pattern2 çè¡ãè¿éè¿æäºç¨äºæç´¢çç¹æ®ç¬¦å·ï¼
\< å \> åå«æ 注åè¯çå¼å§ä¸ç»å°¾ã
ä¾å¦ï¼
grep man * ä¼å¹é
âBatmanâãâmanicâãâmanâçï¼
grep â\<manâ * å¹é
âmanicâåâmanâï¼ä½ä¸æ¯âBatmanâï¼
grep â\<man\>â åªå¹é
âmanâï¼èä¸æ¯âBatmanâæâmanicâçå
¶ä»çå符串ã
â^âï¼æå¹é
çå符串å¨è¡é¦ï¼
â$âï¼æå¹é
çå符串å¨è¡å°¾ï¼ 1. grepç®ä»grep ï¼global search regular expression(RE) and print out the line,å
¨é¢æç´¢æ£å表达å¼å¹¶æè¡æå°åºæ¥ï¼æ¯ä¸ç§å¼ºå¤§çææ¬æ索工å
·ï¼å®è½ä½¿ç¨æ£å表达å¼æç´¢ææ¬ï¼å¹¶æå¹é
çè¡æå°åºæ¥ãUnixçgrep家æå
æ¬grepãegrepåfgrepãegrepåfgrepçå½ä»¤åªè·grepæå¾å°ä¸åãegrepæ¯grepçæ©å±ï¼æ¯ææ´å¤çreå
åç¬¦ï¼ fgrepå°±æ¯fixed grepæfast grepï¼å®ä»¬æææçåæ¯é½çä½åè¯ï¼ä¹å°±æ¯è¯´ï¼æ£å表达å¼ä¸çå
å符表示åå
¶èªèº«çåé¢æä¹ï¼ä¸åç¹æ®ãLinux使ç¨GNUçæ¬çgrepãå®åè½æ´å¼ºï¼å¯ä»¥éè¿-Gã-Eã-Få½ä»¤è¡é项æ¥ä½¿ç¨egrepåfgrepçåè½ãgrepçå·¥ä½æ¹å¼æ¯è¿æ ·çï¼å®å¨ä¸ä¸ªæå¤ä¸ªæ件ä¸æç´¢å符串模æ¿ãå¦æ模æ¿å
æ¬ç©ºæ ¼ï¼åå¿
须被å¼ç¨ï¼æ¨¡æ¿åçææå符串被çä½æ件åãæç´¢çç»æ被éå°å±å¹ï¼ä¸å½±ååæ件å
容ã2. POSIXå符类为äºå¨ä¸åå½å®¶çå符ç¼ç ä¸ä¿æä¸è³ï¼POSIX(The Portable Operating System Interface)å¢å äºç¹æ®çå符类ï¼å¦[:alnum:]æ¯A-Za-z0-9çå¦ä¸ä¸ªåæ³ãè¦æå®ä»¬æ¾å°[]å·å
æè½æ为æ£å表达å¼ï¼å¦[A- Za-z0-9]æ[[:alnum:]]ãå¨Linuxä¸çgrepé¤fgrepå¤ï¼é½æ¯æPOSIXçå符类ã[:alnum:]æåæ°åå符[:alpha:]æåå符[:digit:]æ°åå符[:graph:]é空å符ï¼éç©ºæ ¼ãæ§å¶å符ï¼[:lower:]å°åå符[:cntrl:]æ§å¶å符[:print:]é空å符ï¼å
æ¬ç©ºæ ¼ï¼[:punct:]æ ç¹ç¬¦å·[:space:]ææ空ç½å符ï¼æ°è¡ï¼ç©ºæ ¼ï¼å¶è¡¨ç¬¦ï¼[:upper:]大åå符[:xdigit:]åå
è¿å¶æ°åï¼0-9ï¼a-fï¼A-Fï¼
3.Grepå½ä»¤é项-?åæ¶æ¾ç¤ºå¹é
è¡ä¸ä¸çï¼è¡ï¼å¦ï¼grep -2 pattern filenameåæ¶æ¾ç¤ºå¹é
è¡çä¸ä¸2è¡ã-bï¼--byte-offsetæå°å¹é
è¡åé¢æå°è¯¥è¡æå¨çåå·ç ã-c,--countåªæå°å¹é
çè¡æ°ï¼ä¸æ¾ç¤ºå¹é
çå
容ã-f Fileï¼--file=Fileä»æ件ä¸æå模æ¿ã空æ件ä¸å
å«0个模æ¿ï¼æ以ä»ä¹é½ä¸å¹é
ã-hï¼--no-filenameå½æç´¢å¤ä¸ªæ件æ¶ï¼ä¸æ¾ç¤ºå¹é
æ件ååç¼ã-iï¼--ignore-case忽ç¥å¤§å°åå·®å«ã-qï¼--quietåæ¶æ¾ç¤ºï¼åªè¿åéåºç¶æã0å表示æ¾å°äºå¹é
çè¡ã-lï¼--files-with-matchesæå°å¹é
模æ¿çæ件æ¸
åã-Lï¼--files-without-matchæå°ä¸å¹é
模æ¿çæ件æ¸
åã-nï¼--line-numberå¨å¹é
çè¡åé¢æå°è¡å·ã-sï¼--silentä¸æ¾ç¤ºå
³äºä¸åå¨æè
æ æ³è¯»åæ件çé误信æ¯ã-vï¼--revert-matchåæ£ç´¢ï¼åªæ¾ç¤ºä¸å¹é
çè¡ã-wï¼--word-regexpå¦æ被<å>å¼ç¨ï¼å°±æ表达å¼å为ä¸ä¸ªåè¯æç´¢ã-Vï¼--versionæ¾ç¤ºè½¯ä»¶çæ¬ä¿¡æ¯ã4.å®ä¾è¦ç¨å¥½grepè¿ä¸ªå·¥å
·ï¼å
¶å®å°±æ¯è¦å好æ£å表达å¼ï¼æ以è¿éä¸å¯¹grepçææåè½è¿è¡å®ä¾è®²è§£ï¼åªåå 个ä¾åï¼è®²è§£ä¸ä¸ªæ£å表达å¼çåæ³ã$ ls -l | grep '^a'éè¿ç®¡éè¿æ»¤ls -lè¾åºçå
容ï¼åªæ¾ç¤ºä»¥aå¼å¤´çè¡ã$ grep 'test' d*æ¾ç¤ºææ以då¼å¤´çæ件ä¸å
å«testçè¡ã$ grep 'test' aa bb ccæ¾ç¤ºå¨aaï¼bbï¼ccæ件ä¸å¹é
testçè¡ã$ grep '[a-z]' aaæ¾ç¤ºææå
å«æ¯ä¸ªå符串è³å°æ5个è¿ç»å°åå符çå符串çè¡ã$ grep 'w(es)t.*' aaå¦æwest被å¹é
ï¼åes就被åå¨å°å
åä¸ï¼å¹¶æ 记为1ï¼ç¶åæ索任æ个å符ï¼.*ï¼ï¼è¿äºå符åé¢ç´§è·çå¦å¤ä¸ä¸ªesï¼ï¼ï¼æ¾å°å°±æ¾ç¤ºè¯¥è¡ãå¦æç¨egrepægrep -Eï¼å°±ä¸ç¨""å·è¿è¡è½¬ä¹ï¼ç´æ¥åæ'w(es)t.*'å°±å¯ä»¥äºã
温馨提示:答案为网友推荐,仅供参考