grep
? ? ? ? grep主打的就是查找功能 ,它能夠在一個或者多個文件中搜索某一特定的字符模式。
grep的語法
? ? ? ? grep [選項] 模式 文件名
先說選項:
1.選項
? ? ? ? 要么是正則要么是字符串
-c ??????列出共出現(xiàn)多少次
-i? ? ? ? 忽略大小寫
-n? ? ? ?在前面列出行號
-v? ? ? ?列出沒有匹配的 換句話說 反著來
-r? ? ? ? 迭代
?2. 模式
? ? ? ? 這里說白了就是寫你要查的目標字符串 可以用“ ”隔開來構(gòu)成字符串 當然也可以使用 正則表達式
sed
? ? ? ? 啥是sed?以我的理解就是以非交互的形式 對一個文件進行增刪改查,所以我可以認為sed是一個行編輯器。
sed的原理
????????我們在使用之前要了解其原理的,它其實是將原數(shù)據(jù)拷貝到內(nèi)存上處理,因此操作的結(jié)果是對原數(shù)據(jù)沒有任何“傷害”的。
sed 的語法
? ? ? ? sed [選項] '{command}[flags]'?[filename]
那么我們先介紹內(nèi)部命令也就是command部分的內(nèi)容
1.command
? ? ? ? 這里其實可以叫做內(nèi)部命令,我們將從增刪改查的方向來進行講解:
????????1.增
a + 要加的內(nèi)容 (默認每行)
當然可以在a前面添加模糊匹配 形如 /^***/ 這樣的字段? ***表示的是要模糊查詢的目標字符
我們注意到了上圖表達了? a 就是尾插 那肯定還有一個前插咯
i 代表的是 前插~~?用法與上述類似
2.刪
其關(guān)鍵字就是d?
3.改
又分為替換、轉(zhuǎn)換;
? ? ? ? s:替換的意思就是將原字符串替換成一個新的字符串~~
將全部的student替換成boy了/g代表的就是全部 當然這是flag的內(nèi)容
? ? ? ?y: 轉(zhuǎn)換是對字符就比如說
? ? ? ? ?c:是全文改變
4.查
? ? ? ? 那就是 p
要注意的是直接使用p的話會重復打印 因為會打印倆部分 一是文本還有就是內(nèi)存的也會被打印出來
2.選項
? ? ? ? 所有命令的選項都是對命令的增強
-e 植入多個命令 用;隔開
-f 調(diào)用寫入文件里面的命令
-n 抑制內(nèi)存輸出
-r 正則表達式
-i 就是直接修改源文件了 而不是在內(nèi)存上
? ? ? ? 當然這里要考慮到安全性 因此 基本上使用的是 -i.xxx 搞一個備份存儲上去
3.標志(flag)
? ? ? ? 跟在command后面的做補充
數(shù)字 : 就代表第幾個進行操作(可能會找到多個匹配的點)
g:全部
w:寫入到...進行備份
p:打印輸出
awk
? ? ? ? 是一種可以處理數(shù)據(jù),產(chǎn)生格式化報表的語言
先搞懂 如何劃分行列的:行區(qū)分(換行符) 列區(qū)分(一個/多個 空格 或者是tab制表符)
awk語法
? ? ? ? awk [options] [BEGIN]{program}[END][FILENAME]
有幾個要注意的點:一是命令需要用 ' ' 包起來,二是要有{}包裹program
接下來我將從 行截取 列截取分別講解awk的基本應用
列截取(字段)
? ? ? ? 我們將數(shù)據(jù)的列稱作字段,具體的截取規(guī)則如下
$0 代表的是整個文本
$N 代表第幾列
$NF 代表了最后一列
當然了,這里應該是默認空格或者多個空格作為分割的,我們也可以自定義一下分隔符,也是選項中的內(nèi)容了?-F "**" (**代表了自定義的分隔符)
行截?。ㄓ涗洠?/h4>
? ? ? ? 我們將行叫做記錄~~,那么對于行的截取有倆種方式:1、正則表達式? ?2、NR指定行號
直接用NR指定的方式如下:
?
那么使用正則表達式的話:
?
以上內(nèi)容既然有了行,列;我們就可以定義某個點咯~~
?
程序的優(yōu)先級
? ? ? ? 在awk語法上面,我們注意到了有BEGIN END的這樣子的字段,那么代表的啥呢?
BEGIN :處理數(shù)據(jù)源之前干什么? ? ? ? 也就是說 不需要有數(shù)據(jù)源就可以執(zhí)行了
PROGRAM :對數(shù)據(jù)源干了什么
END : 處理完數(shù)據(jù)源之后干了什么
?????????
注意到上面的命令中是沒有數(shù)據(jù)源的。
高級應用
? ? ? ? 既然前面提到了awk是一門語言,那肯定有變量、運算了。
?1.變量(容器)
? ? ? ? 說到容量,簡單理解就是一個放在內(nèi)存的臨時容器,需要臨時存儲就放進去,需要用到就取出來。
? ? ? ??
當然還有數(shù)組了:?????????
?用法都差不多,不再贅述
2.運算
? ? ? ? 賦值運算? ? ? ? =
? ? ? ? 比較? ? ? ? ? ? ? ? > < >= <= ==
? ? ? ? 數(shù)學? ? ? ? ? ? ? ? + - * / %
? ? ? ? 邏輯? ? ? ? ? ? ? ? && || !
? ? ? ? 匹配? ? ? ? ? ? ? ? ~ !~ (模糊)? ? == (精確)
?
?
0代表假..
環(huán)境變量
? ? ? ? 常見的內(nèi)置變量:
FIELDWIDTHS 定義了字段的寬度(列與列之間的)
FS 相當于-F 可以自定義分隔符
OFS 輸出想要呈現(xiàn)到屏幕上的分隔符
RS 那就是行分隔符咯
ORS 同理
?文章來源:http://www.zghlxwxcb.cn/news/detail-678146.html
?文章來源地址http://www.zghlxwxcb.cn/news/detail-678146.html
到了這里,關(guān)于Linux 三劍客的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!