《詳細grep、sed、awk》:
目錄
1. grep
2. sed
3. awk
3.2 疑問點
流編輯器,過濾和替換文字。
用法:sed [option]... [input-file]...
sed [選項] '位址 命令' file
選項描述
-n不列印模式空間
-e執行指令碼-表示式來處理
-f指令碼檔案的內容新增到命令被執行
-i修改原始檔
-r使用擴充套件正規表示式
命令m描述
s/regexp/replacement/
t替換字串
pd列印當前模式空間
pd列印模式空間的第一行
ds刪除模式空間,並且開始下乙個迴圈
ds刪除模式空間的第一行,開始下乙個迴圈
=d列印當前行號
a \text
d當前行追加文字
i \text
d當前行上面插入文字
c \text
s所選行替換文字
ql立即退出sed指令碼
rz追加文字來自檔案
位址m描述
first~step
b步長,每step行,從first開始
$p匹配最後一行
/regexp/
z正規表示式匹配行
number
z只匹配制定行
addr1、addr2
k開始匹配addr1開始,直接addr2行結束
addr1,+n
c從addr1行開始,向後的n行
addr1,~n
c從addr1行開始,到n行結束
awk是乙個處理文字的程式語言工具,能用簡短的程式處理輸入檔案、資料排序、計算以及生產報表等等。
在linux系統下預設awk是gawk,它是awk的gun版本。可以通過命令檢視應用的版本:ll /bin/awk
基本的命令語法:awk option 'patten ' file
其中pattern表示awk在資料中查詢的內容,而action是在找到匹配內容時所執行的一系列命令。花括號用於根據特定的模式對一系列指令進行分組。
pattern引數可以是egrep正規表示式的任意乙個,使用/re/再加上一些樣式匹配,匹配方式與sed類似,也可以使用「,」分開兩樣式以選個某個範圍。
awk處理的工作方式與資料庫類似,支援對記錄和字段處理,這也是grep和sed不能實現的。
在awk中,預設的情況下將文字檔案中一行視為乙個記錄,而將一行中的某一部分作為記錄中的乙個字段,用1,2,3....數字的方式順序的表示行(記錄)中的不同字段。用$後跟數字,引用對應的字段,以逗號分割,0表示整個行。
選項m描述
-f program-file
c從檔案中讀取awk程式原始檔
-f fs
z指定fs為輸入字段分隔符
-v var=value
b變數賦值
--posix
z只支援posix正規表示式
pattern
description
begin
g給程式賦予初始狀態,先執行的工作
endc程式結束之後執行的一些掃尾工作
/regular expression/
w為每個輸入記錄匹配正規表示式
pattern && pattern
l邏輯and,滿足兩個模式
pattern || pattern
邏輯或,滿足其中乙個模式
! pattern
l邏輯非,不滿足模式
pattern1,pattern2
f範圍模式,匹配所以1的記錄,直到匹配到模式2
1.q:如下-f"[ ,]+" 什麼含義?
[root@vm_0_7_centos tmp]
# cat test
i am cai,my qq is
[root@vm_0_7_centos tmp]
# awk -f"[ ,]+" '' test
cai is
a:見如下正規表示式說明中和+
也即以乙個或多個"空格"或","做為字段分隔符。
Docker(個人備忘)
ubuntu server 20.04 docker安裝ubuntu docker 安裝 docker配置支援nvidia gpu add the package repositories distribution etc os release echo id version id curl s l...
vim操作 個人備忘
root目錄 使用者家目錄 一般模式 移動游標。i.o.a.r按鍵進入命令模式。按 q退出,wq儲存退出,加!強制執行以上操作 1.箭頭上下左右移動游標,下移30行 30下箭頭 2.ctrl f pagedown ctrl b pageup 3.n游標向右移動n個空格 4.0 home end 6....
ReactNative菜鳥備忘錄 個人備忘
環境搭建 入門q a q 建立新專案,react native init awesomeproject命令長時間無響應,或報錯shasum check failed a 由於眾所周知的網路原因,react native命令列從npm官方源拖 時會遇上麻煩。請將npm倉庫源替換為國內映象 npm co...