日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

grep的作用:根據指定的模式搜索文本,將匹配到的文本行顯示出來

語法格式:grep [options] "PATTERN" file

PATTERN為正則表達式,grep一般是與正則表達式配合使用的,因此我們先介紹shell下的正則表達式。正則表達式,簡單來說就是匹配規則。某一行文本與正則表達式進行匹配只有兩種結果,要么匹配,要么不匹配。

接下來我們詳細的介紹下正則表達式

1.元字符:

.: 匹配任意單個字符

[]: 匹配指定范圍內的任意單個字符

[^]:匹配指定范圍外的任意單個字符

字符集合:

[:digit:] ?or [0-9] 數字 ?#####注意,在正則表達式中表示單個數字需要使用[[:digit:],比如說

grep '^[0-9]' ?1.txt 等價與 grep '^[[:digit:]]' 1.txt

但是grep '^[:digit:]' 1.txt的寫法是錯誤的 下面一樣,不在贅述。

[:lower:] ?or [a-z] 小寫字母

[:upper:] ?or [A-Z] 大寫字母

[:punct:] ?標點符號

[:space:] ?空白

[:alpha:] [a-zA-Z] 字母

[:alnum:] [a-zA-Z0-9] 字母+數字

[^[:digit:]] 非數字

2.匹配次數(貪婪模式, ?一直匹配到最后):

*: 匹配其前面的字符任意次

a, b, ab, aab, acb, adb, amnb

a*b, a?b

a.*b

.*: 任意長度的任意字符 (注意,區別于通配符)

\?: 匹配其前面的字符1次或0次 ? ? 別忘了轉義\

\{m,n\}:匹配其前面的字符至少m次,至多n次 ? ?別忘了轉義\

\{1,\} ?至少1次

\{0,3\} 0到3次

3.位置錨定:

^: 錨定行首,此字符后面的任意內容必須出現在行首

$: 錨定行尾,此字符前面的任意內容必須出現在行尾

^$: 空白行

\

\>或\b: 錨定詞尾,其前面的任意字符必須作為單詞的尾部出現

4.分組: 別忘了轉義

\(\)

\(ab\)* ?ab看做是一個整體

后向引用

\1: 引用第一個左括號以及與之對應的右括號所包括的所有內容

\2:

\3:

在指定正則表達式的同時也可以指定選項

-i 忽略大小寫

-v 顯示不匹配的行

-o 只顯示匹配的字符串

--color 高亮顯示匹配到的內容

-E: 使用擴展正則表達式

光說不練假把式。下面給出幾個例子

1、顯示/proc/meminfo文件中以不區分大小的s開頭的行;

grep -i '^s' /proc/meminfo

grep '^[sS]' /proc/meminfo

2、顯示/etc/passwd中以nologin結尾的行;

grep 'nologin$' /etc/passwd

取出默認shell為/sbin/nologin的用戶列表

grep "nologin$' /etc/passwd | cut -d: -f1

取出默認shell為bash,且其用戶ID號最小的用戶的用戶名

grep 'bash$' /etc/passwd | sort -n -t: -k3 | head -1 | cut -d: -f1

3、顯示/etc/inittab中以#開頭,且后面跟一個或多個空白字符,而后又跟了任意非空白字符的行;

grep "^#[[:space:]]\{1,\}[^[:space:]]" /etc/inittab

4、顯示/etc/inittab中包含了:一個數字:(即兩個冒號中間一個數字)的行;

grep ':[0-9]:' /etc/inittab

5、顯示/boot/grub/grub.conf文件中以一個或多個空白字符開頭的行;

grep '^[[:space:]]\{1,\}' /boot/grub/grub.conf

6、顯示/etc/inittab文件中以一個數字開頭并以一個與開頭數字相同的數字結尾的行;

grep '^\([0-9]\).*\1$' /etc/inittab

7.分析/etc/inittab文件中如下文本中前兩行的特征(每一行中出現在數字必須相同),請寫出可以精 ? ?確找到類似兩行的模式:

l1:1:wait:/etc/rc.d/rc 1

l3:3:wait:/etc/rc.d/rc 3

grep '^l\([0-9]\):\1.*\1$' /etc/inittab

總結

以上是生活随笔為你收集整理的Linux中锚定符号的作用,Linux基础(9)文本处理三剑客之grep的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。