tft每日頭條

 > 圖文

 > linux利用grep查找内容并創建文件

linux利用grep查找内容并創建文件

圖文 更新时间:2024-05-18 17:12:45

man grep得到下列信息

  • 正常輸出: 輸出含有指定字符串的全部行。
  • -v, --invert-match: 反向操作,輸出不含有指定字符串的全部行。
  • -c, --count: 禁止正常輸出;輸出含有指定字符串的行有幾行。當與-v, --invert-match選項配合使用時,輸出不含指定字符串的行有幾行。
  • -o, --only-matching: 隻輸出全部的指定字符串,而不輸出含有指定字符串的全部行。
  • -l, --files-with-matches: 禁止正常輸出;輸出内容含指定字符串的全部文件的名稱。
  • -L, --files-without-match: 禁止正常輸出;輸出内容不含指定字符串的全部文件的名稱。-l與-L是相反的。
  • -Z: 一般結合-l選項使用。若grep -l不使用-Z,則輸出的多個文件名之間是以換行符分隔開;若grep -l使用-Z,則輸出的多個文件名之間是以null字符分隔隔。
  • -n, --line-number: 顯示行号。
  • -i, --ignore-case: 模式(pattern)和标準輸出(stdout)裡不區分字母大小寫。

grep命令的語法:

  • 當grep的命令參數為文件時: grep [選項1] [選項2] [選項n] [一個待找的字符串] [參數1(文件1)] [參數2(文件2)] [參數n(文件n)]。如果把grep理解為find,那就是: find a string inside a file or more files.
  • 當grep的命令參數為目錄時: grep -r或-R [選項1] [選項2] [選項n] [一個待找的字符串] [參數1(目錄1)] [參數2(目錄2)] [參數n(目錄n)]。
find命令和grep命令的區别

find命令是在文件名稱或目錄名稱裡找指定的字符串。一般,find命令的輸出結果是找到的文件名或目錄名。

grep命令是在文件内容或stdin裡找指定的字符串。然而,grep的輸出結果卻不一定是找到的字符串,而是根據不同的命令選項有不同的輸出,例如,正常輸出模式時會輸出含指定字符串的全部行,加了-l命令選項會輸出含指定字符串的全部文件,等等。

正常輸出模式: 輸出含指定字符串的全部行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。 # 輸出含獨字的全部行 root@hgdm:~/examples# grep '獨' grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。

linux利用grep查找内容并創建文件(grep命令的使用場景)1

grep常規輸出模式

選項-v: 輸出不含指定字符串的全部行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。 # 反向操作,輸出不含獨字的全部行 root@hgdm:~/examples# grep -v '獨' grep_data.txt 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。

linux利用grep查找内容并創建文件(grep命令的使用場景)2

grep -v反選操作

選項-c: 輸出有幾行

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。 # 含獨字的行總共有4行,所以輸出4 root@hgdm:~/examples# grep -c '獨' -n grep_data.txt 4

linux利用grep查找内容并創建文件(grep命令的使用場景)3

grep -c 輸出行數

選項-l: 輸出内容含指定字符串的全部文件

root@hgdm:~/examples/temp# cat data1.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 root@hgdm:~/examples/temp# cat data2.txt 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 # 找到當前目錄下含獨字的全部文件的名稱 root@hgdm:~/examples/temp# grep -lR '獨' ./ ./data1.txt ./data2.txt root@hgdm:~/examples/temp# grep -lR -Z '獨' ./ | xargs -0 cat 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。

linux利用grep查找内容并創建文件(grep命令的使用場景)4

grep -lR -Z

選項-o: 僅僅輸出指定的字符串

root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。 # 隻輸出文件中的全部獨字,而不輸出包含獨字的行 root@hgdm:~/examples# grep -o '獨' grep_data.txt 獨 獨 獨 獨

linux利用grep查找内容并創建文件(grep命令的使用場景)5

grep -o

當grep的參數是文件和stdin組合時

root@hgdm:~/examples# echo -e '獨在異鄉為異客\n獨善其身' 獨在異鄉為異客 獨善其身 root@hgdm:~/examples# cat grep_data.txt 孤舟蓑笠翁,獨釣寒江雪。 花間一壺酒,獨酌無相親。 細草微風岸,危樯獨夜舟。 落葉他鄉樹,寒燈獨夜人。 海内存知己,天涯若比鄰。 烽火連三月,家書抵萬金。 紅豆生南國,春來發幾枝。 root@hgdm:~/examples# echo -e '獨在異鄉為異客\n獨善其身' | grep '獨' - grep_data.txt (standard input):獨在異鄉為異客 (standard input):獨善其身 grep_data.txt:孤舟蓑笠翁,獨釣寒江雪。 grep_data.txt:花間一壺酒,獨酌無相親。 grep_data.txt:細草微風岸,危樯獨夜舟。 grep_data.txt:落葉他鄉樹,寒燈獨夜人。

linux利用grep查找内容并創建文件(grep命令的使用場景)6

當grep的參數是文件和stdin組合時

當需找兩個或兩個以上的指定字符串時

上面的例子,都是在文件或stdin裡查找一個指定字符串,有時候,需要在文件或stdin裡查找兩個或兩個以上指定字符串。

語法為: grep -e "待找字符串1" -e "待找字符串2" -e "待找字符串3"

root@hgdm:~/ls_data# cat file1.txt 孤舟蓑笠翁,獨釣寒江雪。 海内存知己,天涯若比鄰。 root@hgdm:~/ls_data# cat file2.txt 花間一壺酒,獨酌無相親。 烽火連三月,家書抵萬金。 root@hgdm:~/ls_data# cat file3.txt 細草微風岸,危樯獨夜舟。 野曠天低樹,江清月近人。 root@hgdm:~/ls_data# grep -e '孤舟' -e '一壺酒' -e '野曠' -e '天涯' file1.txt file2.txt file3.txt file1.txt:孤舟蓑笠翁,獨釣寒江雪。 file1.txt:海内存知己,天涯若比鄰。 file2.txt:花間一壺酒,獨酌無相親。 file3.txt:野曠天低樹,江清月近人。

linux利用grep查找内容并創建文件(grep命令的使用場景)7

grep -e指定多個待找字符串

當待找的指定字符串是一個正則表達式時

當需要完全使用正則表達式時,使用grep -E或egrep命令。

root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n獨釣寒江雪\n2022 The best" 孤舟蓑笠翁 獨釣寒江雪 2022 The best root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n獨釣寒江雪\n2022 The best" | grep -E '[0-9] ' 2022 The best root@hgdm:~/ls_data# echo -e "孤舟蓑笠翁\n獨釣寒江雪\n2022 The best" | egrep '[0-9] ' 2022 The best

linux利用grep查找内容并創建文件(grep命令的使用場景)8

grep -E和egrep

當grep的參數是含有通配符*的文件名時

root@hgdm:~/ls_data# ls dir1 dir2 dir3 file1.txt file2.txt file3.txt root@hgdm:~/ls_data# cat file* 孤舟蓑笠翁,獨釣寒江雪。 海内存知己,天涯若比鄰。 花間一壺酒,獨酌無相親。 烽火連三月,家書抵萬金。 細草微風岸,危樯獨夜舟。 野曠天低樹,江清月近人。 # *file*匹配到file1.txt file2.txt file3.txt root@hgdm:~/ls_data# grep '獨' *file* file1.txt:孤舟蓑笠翁,獨釣寒江雪。 file2.txt:花間一壺酒,獨酌無相親。 file3.txt:細草微風岸,危樯獨夜舟。

linux利用grep查找内容并創建文件(grep命令的使用場景)9

*file*匹配到file1.txt file2.txt file3.txt

如何讓ls命令隻列出目錄或文件

# 隻列出目錄 ls -l | grep '^d' # 隻列出文件 ls -l | grep '^-'

上述命令的執行結果如下

root@hgdm:~/ls_data# ls -l total 12 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir1 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir2 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir3 -rw-r--r-- 1 root root 0 Apr 4 14:09 file1.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file2.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file3.txt root@hgdm:~/ls_data# ls -l | grep '^d' drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir1 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir2 drwxr-xr-x 2 root root 4096 Apr 4 14:10 dir3 root@hgdm:~/ls_data# ls -l | grep '^-' -rw-r--r-- 1 root root 0 Apr 4 14:09 file1.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file2.txt -rw-r--r-- 1 root root 0 Apr 4 14:09 file3.txt

linux利用grep查找内容并創建文件(grep命令的使用場景)10

ls和grep組合隻列出目錄或文件

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved