導航:首頁 > 凈水問答 > grepv過濾空行

grepv過濾空行

發布時間:2022-11-05 08:44:24

① shell腳本讀文件如何忽略空行和注釋行

可以通過sed命令,將空行和注釋行刪除掉。

1、以下面的文檔內容為例,#號開頭的是注釋,然後有很多空行,文檔名為1.tt。

② linux命令grep怎麼取得空白行

  1. 那個復命令本身就有問題制出來的結果是0;

  2. 修改後的命令如下:

    last| grep [a-zA-Z]|egrep -v 『wtmp』|wc -l


grep [a-zA-Z]排除空行,因為空行不包含字母


③ linux去掉文件中的空行

方法一:利用grep

grep -v '^s*$' test.txt

註:-v表示將匹配的結果進行反轉,正則表達式匹配空行。(空行可包括空格符製表符等空白字元)

方法二:利用sed

sed '/^s*$/d' test.txt

註:d代表刪除該行

方法三:利用awk

awk NF test.txt

註:NF代表當前行的欄位數,空行的話欄位數為0,被awk解釋為假,因此不進行輸出。

以上三種方式均可處理包含空白字元(空格符,製表符等)的空行。

方法四:若空行均由』 '造成,則還可以利用tr命令去除空行。《Linux就該這么學》

tr -s ' ' < test.txt

註:-s代表將多個連續的字元壓縮成一個字元,這里是將多個『 '壓縮成一個' ',達到去除空行的效果。

方法四的缺陷:如果首行就出現空行的話則無法去除首行的空行

④ linux 如何將一行注釋掉

1、使用grep -v "^#" 來去掉注釋行

其中:-v 就是取相反的 ^# 表示以#開頭的行eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用「>」來重寫配置文件)

2、有時也會連同空行一起去掉,使用管道符來完成(^$表示空行 )

eg. grep -v "^#" httpd.conf | grep -v "^$" >> vsftpd.conf

上面用了2次 grep 過濾命令 ,也就是把空行和註解行過濾掉,再把剩下的內容追加保存為原來的配置文件 vsftpd.conf 這個時候就文件里的內容就沒有註解行和空行了。

(4)grepv過濾空行擴展閱讀:

注意事項

1、^一行的開始 ^d以開頭的 ^..1 第三個為1的字元 ^字元要放在匹配的字元前面

2、$一行的末尾 ^$ 表示空行 ^.$匹配一行一個字元的 $字元要放在匹配的字元後面

3、*匹配任意個字元 包括0個字元 .表示單個字元

4、可以屏蔽一個特殊的字元 *.pas 這里的*是特殊字元,這樣就表示*.pas這個文件

5、逗號可以分割不同的匹配字元如[S,s]表示S或者s都可以

6、-表示一個范圍,[1-9],[a-z],[A-Z] [1-9 A-Z a-z]任意的字元或者數字

A{2}B 表示A出現了2次 AAB

A{4,}B 表示A至少出現4次 AAAAB,AAAAAB

A{2,4}B 表示A出現2-4次 AAB AAAB AAAAB

[0-9]{3}.[0-9]{3}.[0-9]{3}.[0-9]{3} 0-999.0-999.0-999.0-999

cat server.conf |grep -v "^[#,;]" |grep -v "^$"

⑤ 如何去掉linux配置文件的注釋行

1、使用grep -v "^#" 來去掉注釋行,其中:-v 就是取相反的 ^# 表示註解行 eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用「>」來重寫配置文件) 2、有時也會連同空行一起去掉,使用管道符來完成(^$表示空行 ) eg. grep -v "^#" httpd.conf | grep -v "^$" >> vsftpd.conf 上面用了 2次 grep 過濾命令 ,也就是把空行和註解行過濾掉,再把剩下的內容追加保存為原 來的配置文件 vsftpd.conf 這個時候就文件里的內容就沒有註解行和空行了,,,, 提示: 對配置文件不熟悉的建議不要用這種方法,配置文件中的註解行還是有一定的幫助的。

⑥ Linux文本匹配命令grep與fgrep使用全解

Linux中grep與fgrep命令的使用,兩個命令的使用都與文本的搜索與匹配相關,是Linux入門學習中的基礎知識,接下來是我為大家收集的Linux文本匹配命令grep與fgrep使用全解,希望能幫到大家。
Linux文本匹配命令grep與fgrep使用全解
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的工作方式是這樣的,它在一個或多個文件中搜索字元串模板。如果模板包括空格,則必須被引用,模板後的所有字元串被看作文件名。搜索的結果被送到屏幕,不影響原文件內容。

grep可用於shell腳本,因為grep通過返回一個狀態值來說明搜索的狀態,如果模板搜索成功,則返回0,如果搜索不成功,則返回1,如果搜索的文件不存在,則返回2。我們利用這些返回值就可進行一些自動化的文本處理工作。

grep --help

匹配模式選擇:

-E, --extended-regexp 擴展正則表達式egrep

-F, --fixed-strings 一個換行符分隔的字元串的集合fgrep

-G, --basic-regexp 基本正則

-P, --perl-regexp 調用的perl正則

-e, --regexp=PATTERN 後面根正則模式,默認無

-f, --file=FILE 從文件中獲得匹配模式

-i, --ignore-case 不區分大小寫

-w, --word-regexp 匹配整個單詞

-x, --line-regexp 匹配整行

-z, --null-data 一個 0 位元組的數據行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 顯示不匹配的行

-V, --version 顯示版本號

--help 顯示幫助信息

--mmap use memory-mapped input if possible

輸入控制:

-m, --max-count=NUM 匹配的最大數

-b, --byte-offset 列印匹配行前面列印該行所在的塊號碼。

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL print LABEL as filename for standard input

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示任何東西

--binary-files=TYPE 假定二進制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 匹配二進制的東西

-I 不匹配二進制的東西

-d, --directories=ACTION 目錄操作,讀取,遞歸,跳過

-D, --devices=ACTION 設置對設備,FIFO,管道的操作,讀取,跳過

-R, -r, --recursive 遞歸調用

--include=PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過所有除FILE 以外的文件

-L, --files-without-match 匹配多個文件時,顯示不匹配的文件名

-l, --files-with-matches 匹配多個文件時,顯示匹配的文件名

-c, --count 顯示匹配了多少次

-Z, --null 在FILE 文件最後列印空字元

文件控制:

-B, --before-context=NUM 列印匹配本身以及前面的幾個行由NUM控制

-A, --after-context=NUM 列印匹配本身以及隨後的幾個行由NUM控制

-C, --context=NUM 列印匹配本身以及隨後,前面的幾個行由NUM控制

-NUM 根-C的用法一樣的

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

-U, --binary 使用標志高亮匹配字串;

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

例:

測試文件

復制代碼

代碼如下:

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

a,匹配含有root的行

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep root test

root:x:0:0:root:/root:/bin/bash

b,匹配以root開頭或者以zhang開頭的行,注意反斜杠

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

c,匹配以root開頭或者以zhang開頭的行,注意反斜杠,根上面一個例子一樣,-e默認是省去的

[root@krlcgcms01 test]# cat test |grep -e '^\(root\|zhang\)'

root:x:0:0:root:/root:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

d,匹配以zhang開頭,只含有字母

復制代碼

代碼如下:

[root@krlcgcms01 test]# echo 'zhangying' |grep '^zhang[a-z]*$'

zhangying

e,匹配以bin開頭的行,用的egrep,在這里可以換成-F,-G

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -E '^bin'

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

f,在匹配的行前面加上該行在文件中,或者輸出中所在的行號

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -n zhangy

7:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

13:ba:x:1002:1002::/home/zhangy:/bin/bash

15:@zhangying:*:1004:1004::/home/test:/bin/bash

g,不匹配以bin開頭的行,並顯示行號

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -nv '^bin'

root:x:0:0:root:/root:/bin/bash

DADddd:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

h,顯示匹配的個數,不顯示內容

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -c zhang

3

i,匹配system,沒有加-i沒有匹配到東西。

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep system test

[root@krlcgcms01 test]# grep -ni system test

9:dbus:x:81:81:System message bus:/:/bin/false

j,匹配zhan沒有匹配到東西,匹配zhangy能匹配到,因為在test文件中,有zhangy這個單詞

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test|grep -w zhan

[root@krlcgcms01 test]# cat test|grep -w zhangy

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

k,在這里-x後面東西,和輸出中的整行相同時,才會輸出

[root@krlcgcms01 test]# echo "aaaaaa" |grep -x aaa

[root@krlcgcms01 test]# echo "aaaa" |grep -x aaaa

aaaa

l,最多隻匹配一次,如果把-m 1去掉的話,會有三個

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -m 1 zhang

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

m,匹配行的前面顯示塊號,這個塊號是干什麼的,不知道,有誰知道可否告訴我一下

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ cat test |grep -b zha

241:zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

480:ba:x:1002:1002::/home/zhangy:/bin/bash

558:@zhangying:*:1004:1004::/home/test:/bin/bash

n,多文件匹配時,在匹配的行前面加上文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -H 'root' test test2 testbak

test:root:x:0:0:root:/root:/bin/bash

test2:root

testbak:root:x:0:0:root:/root:/bin/bash

o,多文件匹配時,在匹配的行前面不加上文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -h 'root' test test2 testbak

root:x:0:0:root:/root:/bin/bash

root

root:x:0:0:root:/root:/bin/bash

p,多文件匹配時,顯示匹配文件的文件名

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep -l 'root' test test2 testbak DAta

test

test2

testbak

q,沒有-o時,有一行匹配,這一行裡面有3個root,加上-o後,這個3個root就出來了

復制代碼

代碼如下:

[apacheuser@krlcgcms01 test]$ grep 'root' test

root:x:0:0:root:/root:/bin/bash

[apacheuser@krlcgcms01 test]$ grep -o 'root' test

root

root

root

r,遞歸顯示匹配的內容,在test目錄下面建個mytest目錄, test目錄下面的test文件到mytest下面,能看到上面的結果

復制代碼

代碼如下:

[root@krlcgcms01 test]# grep test -R /tmp/test/mytest

/tmp/test/mytest/test:test:x:1003:1003::/home/test:/bin/bash

/tmp/test/mytest/test:@zhangying:*:1004:1004::/home/test:/bin/bash

s,顯示匹配root後面的3行

復制代碼

代碼如下:

[root@krlcgcms01 test]# cat test |grep -A 3 root

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false,aaa,bbbb,cccc,aaaaaa

daemon:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

fgrep

用法: fgrep [選項]... PATTERN [FILE]...

在每個 FILE 或是標准輸入中查找 PATTERN。

PATTERN 是一組由斷行符分隔的定長字元串。

例如: fgrep -i 'hello world' menu.h main.c

正則表達式選擇與解釋:

-e, --regexp=PATTERN 用 PATTERN 來進行匹配操作

-f, --file=FILE 從 FILE 中取得 PATTERN

-i, --ignore-case 忽略大小寫

-w, --word-regexp 強制 PATTERN 僅完全匹配字詞

-x, --line-regexp 強制 PATTERN 僅完全匹配一行

-z, --null-data 一個 0 位元組的數據行,但不是空行

雜項:

-s, --no-messages 不顯示錯誤信息

-v, --invert-match 選中不匹配的行

-V, --version 顯示版本信息並退出

--help 顯示此幫助並退出

--mmap 忽略向後兼容性

Output control:

-m, --max-count=NUM 匹配的最大數

-b, --byte-offset 列印匹配行前面列印該行所在的塊號碼

-n, --line-number 顯示的加上匹配所在的行號

--line-buffered 刷新輸出每一行

-H, --with-filename 當搜索多個文件時,顯示匹配文件名前綴

-h, --no-filename 當搜索多個文件時,不顯示匹配文件名前綴

--label=LABEL use LABEL as the standard input file name prefix

-o, --only-matching 只顯示一行中匹配PATTERN 的部分

-q, --quiet, --silent 不顯示所有輸出

--binary-files=TYPE 假定二進制文件的TYPE 類型;

TYPE 可以是`binary', `text', 或`without-match'

-a, --text 等同於 --binary-files=text

-I 等同於 --binary-files=without-match

-d, --directories=ACTION 操作目錄的方式;

ACTION 可以是`read', `recurse',或`skip'

-D, --devices=ACTION 操作設備、先入先出隊列、套接字的方式;

ACTION 可以是`read'或`skip'

-R, -r, --recursive 等同於 --directories=recurse

--include=FILE_PATTERN 只查找匹配FILE_PATTERN 的文件

--exclude=FILE_PATTERN 跳過匹配FILE_PATTERN 的文件和目錄

--exclude-from=FILE 跳過所有除FILE 以外的文件

--exclude-dir=PATTERN 跳過所有匹配PATTERN 的目錄。

-L, --files-without-match 只列印不匹配FILEs 的文件名

-l, --files-with-matches 只列印匹配FILES 的文件名

-c, --count 只列印每個FILE 中的匹配行數目

-T, --initial-tab 行首tabs 分隔(如有必要)

-Z, --null 在FILE 文件最後列印空字元

文件控制:

-B, --before-context=NUM 列印以文本起始的NUM 行

-A, --after-context=NUM 列印以文本結尾的NUM 行

-C, --context=NUM 列印輸出文本NUM 行

-NUM 等同於 --context=NUM

--color[=WHEN],

--colour[=WHEN] 使用標志高亮匹配字串;

WHEN 可以是`always', `never'或`auto'

-U, --binary 不要清除行尾的CR 字元(MSDOS 模式)

-u, --unix-byte-offsets 當CR 字元不存在,報告位元組偏移(MSDOS 模式)

‘fgrep’已不再使用了;請用 ‘grep -F’代替。

不帶 FILE 參數,或是 FILE 為 -,將讀取標准輸入。如果少於兩個 FILE 參數

就要默認使用 -h 參數。如果選中任意一行,那退出狀態為 0,否則為 1;

如果有錯誤產生,且未指定 -q 參數,那退出狀態為 2。

例:

復制代碼

代碼如下:

[root@linux test]# cat abc.sh |fgrep a #匹配含有a的

看了“Linux文本匹配命令grep與fgrep使用全解”還想看:

1. linux grep命令詳解

2. 全面解析Linux的grep命令中正則表達式的用法

3. Linux下如何使用grep命令搜索多個單詞

4. 開發人員常用什麼linux命令

⑦ 如何去掉linux配置文件的注釋行和空行

1、使用grep -v "^#" 來去掉注釋行,其中:-v 就是取相反的 ^# 表示以#開頭的行
eg. grep -v "^#" /etc/vsftpd/vsftpd.conf (也可以使用「>」來重寫配置文件)
2、有時也會連同空行一起去掉,使用管道符來完成(^$表示空行 )
eg. grep -v "^#" httpd.conf | grep -v "^$" >> vsftpd.conf
上面用了 2次 grep 過濾命令 ,也就是把空行和註解行過濾掉,再把剩下的內容追加保存為原
來的配置文件 vsftpd.conf 這個時候就文件里的內容就沒有註解行和空行了,,,,
3、備註:在更改配置文件時,建議先對配置文件做一下備份,對配置文件不熟悉的建議不要用這種方法,配置文件中的註解行還是有一定的幫助的。
cp -a httpd.conf httpd.conf.bak

⑧ 怎樣用grep命令去掉空格行和以#開頭的行

grep -Ev '^[ ]*$|^#' 文件名
-E是擴展的grep,即egrep
-v是反選,除了匹配正則的行都列印出來
正則:
^ 開頭標記
[ ]* 一個或多個空格
$ 行尾
| 或者
^# 以#開頭的行

⑨ Linux grep、egrep使用命令詳解

grep egrep區別
grep 默認不支持擴展 但可以通過-E 選擇來支持擴展正則
egrep 支持擴展正則

關於正則與擴展正則的區別可以看我另一篇shell 正則的介紹
文件處理順序 以行為單位,逐行進行處理
默認只輸出與表達式相匹配的文本行

基本用法
- 格式1:egrep [選擇] '正則表達式' 文件
- 格式2:前置命令 | egrep [選擇] '正則表達式'

• egrep命令工具 (擴展正則命令)

• 常用命令選項

•grep 正則表達式,用來查找過濾文檔的工具符號
grep "root" user //在user文檔中查找有單詞root的行
grep "^root" user //在user文檔中查找以單詞root開頭的行
grep "bash " user //查找空行
grep "^ " user //查找以空格開頭的行
grep "[rot]" user //查找字母r或者o或者t
grep "roo[tn]" user //查找root或者roon
grep "[^rot]" user //查找字母r或者o或者t之外的內容
grep "[a-z]" user //查找小寫字母
grep "[A-Z]" user //查找大寫字母
grep "[a-Z]" user //查找所有字母
grep "[0-9]" user //查找數字

grep "r..t" user //查找以r開頭t結尾中間有2個任意字元的單詞
grep "r. " user //查找以r開頭後面任意字元 相當手通配符
grep "ro*" user //查找以r開頭後面有或沒有字母o的單詞,o可以出現任意次
grep "o{1,2}" user //查找o出現1次到2次的行
grep "o{2,3}" user //查找o出現2次到3次的行
grep "o{2}" user //查找o出現2次的行
grep "o{1,} " user //查找o出現1次以及1次以上
grep "(:0){2}" user //查找:0(數字零)連續出現2次的行
擴展正則
egrep "o+" user //查找o出現1次以及1次以上
egrep "o?" user //查找o出現0次或1次
egrep "o{1,2}" user //查找o出現1次到2次的行
egrep "o{2,3}" user //查找o出現2次到3次的行
egrep "o{2}" user //查找o出現2次的行
egrep "o{1,}" user //查找o出現1次以及1次以上
egrep "(:0){2}" user //查找:0(數字零)連續出現2次的行
egrep "bash|nologin" user //查找bash或者nologin
egrep "the" a //查找單詞the,前後是空格或者特殊符號

案例:
正則表達式匹配練習
1)典型的應用場合:grep、egrep檢索文本行
grep命令不帶-E選項時,支持基本正則匹配模式。比如「word」關鍵詞檢索、「^word」匹配以word開頭的行、「word$」匹配以word結尾的行……等等。
輸出以「r」開頭的用戶記錄:

輸出以「localhost」結尾的行:

若希望在grep檢索式同時組合多個條件,比如輸出以「root」或者以「daemon」開頭的行:

而若若使用grep -E或egrep命令,可支持擴展正則匹配模式,能夠自動識別 |、{} 等擴展正則表達式中的特殊字元,用起來更加方便,比如:

或者

使用grep -E 與 使用egrep命令完全等效,推薦使用後者,特別是涉及到復雜的正則表達式的時候。
2)grep、egrep命令的-q選項
選項 -q 表示 quiet(靜默)的意思,結合此選項可以只做檢索而並不輸出,通常在腳本內用來識別查找的目標是否存在,通過返回狀態 $? 來判斷,這樣可以忽略無關的文本信息,簡化腳本輸出。
比如,檢查/etc/hosts文件內是否存在192.168.4.4的映射記錄,如果存在則顯示「YES」,否則輸出「NO」,一般會執行:

這樣grep的輸出信息和腳本判斷後的提示混雜在一起,用戶不易辨別,所以可以改成以下操作:

是不是清爽多了,從上述結果也可以看到,使用 -q 選項的效果與使用 &> /dev/null的效果類似。
3)基本元字元 ^、$ —— 匹配行首、行尾
輸出注釋的配置行(以#開頭的行):

統計本地用戶中登錄Shell為「/sbin/nologin」的用戶個數:
提示: -m10僅在文件的前10行中過濾,後面的行不再過濾。

結合 -c 選項輸出匹配的行數

使用 -c 選項可輸出匹配行數,這與通過管道再 wc -l的效果是相同的,但是寫法更簡便。比如,統計使用「/bin/bash」作為登錄Shell的正常用戶個數,可執行:

或者

4)基本元字元 . —— 匹配任意單個字元
以/etc/rc.local文件為例,確認文本內容:

輸出/etc/rc.local文件內的空行(用 –v 選項將條件取反):

5)基本元字元 +、?、 —— 目標出現的次數*
還以/etc/rc.local文件為例:

輸出包括 f、ff、ff、……的行,即「f」至少出現一次:

輸出包括init、initial的行,即末尾的「ial」最多出現一次(可能沒有):

輸出包括stu、stuf、stuff、stufff、……的行,即末尾的「f」可出現任意多次,也可以沒有。重復目標只有一個字元時,可以不使用括弧:

輸出所有行,單獨的「.*」可匹配任意行(包括空行):

輸出/etc/passwd文件內「r」開頭且以「nologin」結尾的用戶記錄,即中間可以是任意字元:

6)元字元 {} —— 限定出現的次數范圍
創建一個練慣用的測試文件:

輸出包括ababab的行,即「ab」連續出現3次:

輸出包括abab、ababab、abababab的行,即「ab」連續出現2~4次:

輸出包括ababab、abababab、……的行,即「ab」最少連續出現3次:

7)元字元 [] —— 匹配范圍內的單個字元
還以前面的測試文件bracet.txt為例:

輸出包括abc、abd的行,即前兩個字元為「ab」,第三個字元只要是c、d中的一個就符合條件:

輸出包括大寫字母的行,使用[A-Z]匹配連續范圍:

8)單詞邊界匹配
以文件/etc/rc.local為例:

輸出包括單詞「init」的行,文件中「initialization」不合要求:

或者:

輸出包括以「ll」結尾的單詞的行,使用 > 匹配單詞右邊界:

或者:

9)多個條件的組合
通過dmesg啟動日誌查看藍牙設備、網卡設備相關的信息:

⑩ 怎樣用grep命令去掉空格行和以#開頭的行

grep -vE '^#|^$' filename
「^」表示行首,「^」#就是以#開頭的行。
「$」表示行尾,「^$」就是空行。
-E表示「或」的關系。

閱讀全文

與grepv過濾空行相關的資料

熱點內容
陶氏超濾膜生產基地 瀏覽:142
過濾所需要用的玻璃儀器 瀏覽:384
霍曼三代飲水機濾芯怎麼拆開 瀏覽:848
武漢消毒車載型空氣凈化器多少錢 瀏覽:357
注入版wpe過濾器怎麼用 瀏覽:501
小米凈水器一直亮出水怎麼回事 瀏覽:680
垃圾站怎麼處理污水 瀏覽:600
檸檬酸除垢劑只能除水垢嗎 瀏覽:470
呼和浩特污水廠在哪 瀏覽:628
鹽酸水壺除垢 瀏覽:254
陰離子交換柱多糖上樣量 瀏覽:6
脫硫廢水旋流子堵塞原因 瀏覽:402
石灰乳去鉻離子 瀏覽:407
atem車載空氣凈化器怎麼用 瀏覽:439
ro反滲透膜濾芯直銷 瀏覽:105
4021反滲透膜尺寸 瀏覽:352
凈化器怎麼投放 瀏覽:849
純水機雙出水怎麼安裝 瀏覽:320
衛生間除垢劑有哪一款 瀏覽:350
元神純水精靈怎麼破 瀏覽:234