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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五分钟入门文本处理三剑客grep awk sed

發(fā)布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五分钟入门文本处理三剑客grep awk sed 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

??

點擊上方?好好學(xué)java?,選擇?星標(biāo)?公眾號

重磅資訊、干貨,第一時間送達 今日推薦:Spring Boot + Vue 如此強大?竟然可以開發(fā)基于 C/S 架構(gòu)的應(yīng)用個人原創(chuàng)+1博客:點擊前往,查看更多

介紹

grep awk sed是Linux下文本處理常用的命令,能完成很多神奇的操作,今天就分享一下這三個命令最常見的用法

grep

使用一般有如下兩種形式

第一種形式

grep?[option]?[pattern]?[file1,file2]

如查找show.txt里面包含content的行

grep?content?show.txt

第二種形式

command?|?grep?[option]?[pattern]

如查看某個服務(wù)信息

ps?-ef?|?grep?mongo

如查找show.txt里面包含content的行

cat?show.txt?|?grep?content

必須掌握的選項

選項含義
-v顯示不匹配行信息(反向搜索)
-i搜索時忽略大小寫
-n顯示行號(文件中的行號)
-r遞歸搜索(搜索文件夾)
-E支持?jǐn)U展正則表達式
-F不按正則表達式匹配,按照字符串字面意思匹配
cat?show.txta b c d py* i?love?python

-v 選項

grep?-v?a?show.txtb c d *py i?love?python

-n選項

grep?-n?a?show.txt?1:a

-r選項 查找/etc/myconfig及其子目錄下,打印出包含content字符串所在行的內(nèi)容

?grep?-r?content?/etc/myconfig

-F選項

grep?py*?show.txt?py* i?love?python

py被當(dāng)成正則表達式處理,我就想搜索py這個內(nèi)容,就可以用到-F選項

grep?-F?py*?show.txtpy*

了解的選項

選項含義
-c只輸出匹配行的數(shù)量,不顯示具體內(nèi)容
-w匹配整詞
-x匹配整行
-l只列出匹配的文件名,不顯示具體匹配行內(nèi)容
cat?show.txtlove? lovelove i?love i?love?a

-w選項(lovelove這個詞沒有顯示出來,因為love前后得有空格或者tab才會認(rèn)為是一個單詞)

grep?-w?love?show.txtlove? i?love i?love?a

-x 選項(匹配行,行的內(nèi)容只能是i love a)

grep?-x?"i?love?a"?show.txti?love?a

這些選項可以混著用,例如

查找/etc/myconfig及其子目錄下,打印出包含content字符串所在文件的文件名

grep?-rl?abc?/etc/myconfig

-r:遞歸搜索(搜索文件夾) -l:只列出匹配的文件名,不顯示具體匹配行內(nèi)容

當(dāng)然用find也是可以的,只不過麻煩一點

find?/etc/myconfig?-type?f?|?xargs?grep?-l?abc?

這個命令在看配置的是時候還是挺管用的

查看日志常用的選項

選項含義
-C n顯示匹配行及其前后5行
-B n顯示匹配行及其前5行
-A n顯示匹配行及其后5行
cat?show.txt1 2 3 4 5 6 7

查找4及其上下2行

cat?show.txt?|?grep?-C?2?42 3 4 5 6

查找4及其前2行

grep?-B?2?4?show.txt?2 3 4

grep和egrep的區(qū)別和聯(lián)系

grep默認(rèn)不支持?jǐn)U展正則表達式,只支持基礎(chǔ)正則表達式 使用grep -E 可以支持?jǐn)U展正則表達式 使用egrep可以支持?jǐn)U展正則表達式,與grep -E等價

awk

使用一般有如下兩種形式

第一種形式

awk?'BEGIN{}pattern{commands}END{}'?file_name 語法格式解釋
BEGIN正式處理數(shù)據(jù)之前
pattern匹配模式
{commands}匹配命令,可能多行
END處理完所有匹配數(shù)據(jù)后執(zhí)行

第二種形式

standard?output?|??awk?'BEGIN{}pattern{commands}END{}'

awk的內(nèi)置變量

內(nèi)置變量含義
$0整行內(nèi)容
n當(dāng)前行的第1-n個字段(按照指定分隔符分割后)
NF(Number Field)當(dāng)前行的字段個數(shù),也就是多少列
NR(Number Row)當(dāng)前行的行號,從1開始計數(shù)
FNR(File Number Row)多文件處理時,每個文件行號單獨計數(shù),都是從0開始
FS(Field Separator)輸入字段分割符。不指定默認(rèn)以空格或者Tab鍵分割
RS(Row Separator)輸入行分割符。默認(rèn)回車\n
OFS(Output Field Sepatator)輸出字段分割符。默認(rèn)為空格
ORS(Output Row)輸出行分隔符。默認(rèn)為回車
FILENAME當(dāng)前輸入的文件名字
ARGC命令行參數(shù)個數(shù)
ARGV命令行參數(shù)數(shù)組

看一下/etc/passwd文件的內(nèi)容

cat?/etc/passwdroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

輸出文件的每行內(nèi)容

#?$0為整行內(nèi)容 awk?'{print?$0}'?/etc/passwdroot:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin

輸出第二列內(nèi)容

需要指定分隔符:

#?$2為第二列內(nèi)容 awk?'BEGIN{FS=":"}{print?$2}'?/etc/passwdx x x

不需要指定分割符,默認(rèn)空格,tab鍵,多個也可以分隔(如一個空格+一個tab鍵)

cat?show.txt#?空格分隔 python?java?php #?tab鍵分隔 flink?hadoop?storm

輸出第一列內(nèi)容

awk?'{print?$1}'?show.txtpython flink

輸出每一行有多少列

awk?'{print?NF}'?show.txt3 3

可以用這個輸出每一行的最后一列的值

awk?'{print?$NF}'?show.txt

輸出行號

awk?'{print?NR}'?show.txt1 2

對每個文件的行號單獨計數(shù)(顯示show.txt和/etc/passwd文件的行號,不累加)

awk?'{print?FNR}'?show.txt?/etc/passwd1 2 1 2 ...

同時指定行分隔符和列分隔符

cat?show.txtpython|java|php--flink|hadoop|storm

先輸出每一行數(shù)據(jù)

#?RS為指定行分隔符 awk?'BEGIN{RS="--"}{print?$0}'?show.txtpython|java|php flink|hadoop|storm

輸出每一行的第二列

#?RS指定行分隔符 #?FS指定列分隔符 awk?'BEGIN{RS="--";FS="|"}{print?$2}'?show.txtjava hadoop

在上面基礎(chǔ)上指定行分隔符

#?ORS?輸出行分割符 awk?'BEGIN{RS="--";FS="|";ORS="&"}{print?$2}'?show.txtjava&hadoop&

再次指定列分隔符

#?OFS輸出列分隔符 awk?'BEGIN{RS="--";FS="|";ORS="&";OFS="@@"}{print?$1,$2}'?show.txtpython@@java&flink@@hadoop&

輸出文件名字

cat?show.txtpython|java|php flink|hadoop|storm awk?'{print?FILENAME}'?show.txtshow.txt show.txt

因為是對行進行處理,所以有幾行,輸出幾次文件名

當(dāng)然awk還有其他強大的操作,如支持函數(shù),流程控制,格式化輸出等。有興趣的可以了解一下awk編程,這里就不再多做介紹了

假如有一個如下的訪問日志request.log

2020-05-21 request enter 2020-05-21 request ip 127.0.0.1 2020-05-21 request finish 2020-05-21 request enter 2020-05-21 request error 2020-05-21 request enter 2020-05-21 request ip 127.0.0.1 2020-05-21 request finish 2020-05-21 request enter 2020-05-21 request ip 11.25.58.21 2020-05-21 request finish

想統(tǒng)計當(dāng)日去重后的ip有多少個,就可執(zhí)行如下命令

#?sort為排序,uniq為去重 cat?request.log?|?grep?ip?|?awk?'{print?$4}'?|?sort?|?uniq 11.25.58.21 127.0.0.1

我原來維護了一個hadoop集群,當(dāng)想關(guān)閉集群中的所有DataNode節(jié)點(可以認(rèn)為一個應(yīng)用),假如每個機器jps,查看pid,kill。很麻煩,直接寫了一個腳本,依次ssh到各個節(jié)點,然后執(zhí)行如下命令即可,超級省事

kill?`jps?|?grep?'DataNode'?|?awk?'{print?$1}'`

sed

sed的功能和文本編輯器有點類似,因為我在Linux對文本進行修改用vim比較多,sed的話可能在腳本中用的多一點,因此也沒多少經(jīng)驗,簡單介紹一個替換的示例

cat?show.txt? this?is?a?test?for?sed this?is?second?line#?將second替換為first輸出到屏幕,文件內(nèi)容并沒有改變 #?有選項可以指定,不再介紹 sed?'s/second/first/'?show.txt this?is?a?test?for?sed this?is?first?line 最后,再附上我歷時三個月總結(jié)的?Java 面試 + Java 后端技術(shù)學(xué)習(xí)指南,這是本人這幾年及春招的總結(jié),目前,已經(jīng)拿到了大廠offer,拿去不謝!下載方式1.?首先掃描下方二維碼 2.?后臺回復(fù)「Java面試」即可獲取

總結(jié)

以上是生活随笔為你收集整理的五分钟入门文本处理三剑客grep awk sed的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日批在线播放 | 韩国三级免费 | 好姑娘在线观看高清完整版电影 | 桃色激情网 | 黄片一区二区 | 凹凸精品一区二区三区 | 亚洲免费人成 | 久久久久亚洲av无码网站 | 欧美激情性做爰免费视频 | 麻豆久久久久久 | 欧美 唯美 清纯 偷拍 | 欧美爱爱视频 | www.亚色 | 亚洲春色www | 欧美综合影院 | 亚洲a∨无码无在线观看 | 毛片库 | 91极品视频| 精品国产一级久久 | 九色tv| 亚洲综合激情网 | 成年人看的网站 | 久久精品成人一区二区三区蜜臀 | 欧美a大片 | 美女诱惑一区 | 韩国三级在线 | 艳妇臀荡乳欲伦交换h漫 | 人人干美女 | 爱爱动态图 | 午夜福利理论片在线观看 | 美女干b视频 | 国产三级自拍 | 国产精品蜜 | 日韩无码精品一区二区三区 | 碰碰色| 亚洲精品一区二区三区婷婷月 | 久草剧场| 亚洲高清av在线 | 大乳女喂男人吃奶视频 | 在线爱情大片免费观看大全 | 午夜激情一区二区 | 已满18岁免费观看电视连续剧 | 亚洲av区无码字幕中文色 | 亚洲欧美色图片 | 国产成人小视频在线观看 | 成人综合影院 | 青青草成人网 | 国产一级在线视频 | 精品国产一区二区三区性色 | 免费黄色国产 | 日韩在线免费视频观看 | 欧美色图88| 日韩a级片 | 婷婷在线一区 | 黄色国产片 | 一区二区三区欧美日韩 | 四虎精品在线 | 浮妇高潮喷白浆视频 | 免费看黄色的视频 | 日韩一级在线观看 | 操操操综合 | 日本亚洲网站 | 玖玖五月| 国产精品一二三区 | 中日韩中文字幕 | 伊人导航 | 亚洲日日干 | 亚洲综合另类小说 | 日韩一区免费观看 | 欧美一区二区三区视频在线观看 | 亚洲又粗又长 | 一区二区三区在线免费观看 | 色噜噜网站 | 欧美视频免费看 | 日韩草逼| 亚洲伊人影院 | 中国黄色一级片 | 欧美性开放视频 | 成年人免费大片 | 99国产在线视频 | 欧美成人一二区 | 91视频麻豆 | 国产一区二区黄色 | 亚洲成人77777 | 自拍天堂 | 日韩欧av | 欧美日韩一区三区 | 日本加勒比一区二区 | 久草欧美 | 噜噜噜噜私人影院 | 亚洲春色一区二区三区 | 91一区二区三区四区 | 亚洲乱码一区二区三区在线观看 | 欧美日韩一区二区综合 | 黄网站在线免费 | 乱一色一乱一性一视频 | cao死你| 在线看av网址 | 亚洲专区在线视频 |