-
sed '4c cang bujige' student.txt //行替換
sed '2,4s/F/M/g' student.txt //指定范圍內的行進行字符串替換
sed -3 's/furong/xx/g;s/fengji/yy/g' student.txt //-e選項,進行多條sed動作操作,動作之間用";"分隔
sed '2d' test.txt #刪除第二行
sed '2,4d' test.txt #刪除第二到第四行
sed '2a input content' test.txt #在第二行后追加input content
sed '2i input content' test.txt #在第二行前插入input content
sed '2c input content' test.txt #將第二行替換為input content(替換一整行)
各個動作都可以加上行號范圍
/g是指在指定范圍內有多個舊字符串,就替換掉所有的,如果沒有/g,就只替換第一個舊字符串
多個動作之間可用“;”隔開
查看全部 -
【字符替換命令sed】
sed是一種幾乎包括在所有的UNIX平臺(包括Linux)的輕量級流編輯器。sed主要是用來將數據進行選取、替換、刪除、新增的命令。
sed 選項 '動作' 文件名
#''不能省略
選項
-n? #一般sed命令會把所有數據都輸出到屏幕,如果加入此選擇,則只會把經過sed命令處理的行輸出到屏幕
-e? #允許對輸入數據應用多條sed命令編輯(多個動作)
-i? #用sed的修改結果直接修改讀取數據的文件,而不是由屏幕輸出
動作
a? #追加,在當前行后添加一行或多行
c? #行替換,用c后面的字符串替換原數據行
i? #插入,在當前行之前插入一行或多行
d? #刪除,刪除指定的行
p? #打印,輸出指定的行
s? #字符串替換,用一個字符串替換另外一個字符串。格式為"行范圍s/舊字符串/新字符串/g"(和vim中的替換格式類似)
查看全部 -
FS內置變量
查看全部 -
在awk中,一般默認是制表符或者空格作為分隔符,假如說我們想要使用其他的符號作為分隔符,我們可以
awk " {FS=":"}{printf $1 "\t" $3 "\n"}'這樣:就變成了分隔符,{FS=":"}意思是這個:分隔符的別名起名為FS。
當我們使用自己定義的分隔符時,一般都在條件前面加上BEGIN,否則第一行讀取的數據會識別不了自己定義的分隔符,因此我們應該這樣做awk "BEGIN {FS=":"}{printf $1 "\t" $3 "\n"}'
查看全部 -
awk 'BEGIN{動作0}條件1{動作1}條件2{動作2}' 表示在所有動作之前先執行動作0,相應的還有END,表示在所有動作執行之后執行動作0。
FS內置變量,用來指定分隔符;
BEGIN可以在執行打印工作之前,首先指明分隔符,以打印出正確結果,例如:cat /etc/passwd|grep "/bin/bash"|awk 'BEGIN{FS=":"}{print $1 "\t" $3}'
查看全部 -
awk命令:
awk是一個數據處理工具,相比于sed常常作用于一整行的處理,awk則比較傾向于將一行分成數個”字段“來處理。?
通常運行模式: awk ' 條件類型1{動作1} 條件類型2{動作2}...‘?文件名?
例:awk '{printf $2 "\t" $4 "\n"}' filename awk '{print $2 "\t" $4}' filename?
printf后面要接換行符"\n" print 不需要
awk命令的格式
1.awk '條件1{動作1}條件2{動作2}……’ 文件 其中轉義符\n等需要用雙引號括起來才可以生效
2.在printf中$1 代表打印第一個字段。也就是說字段是以空格為分割的。
3.其中把文件的文件名賦予了$0變量
4.print命令可以比printf命令在一行的末尾自動加入換行符
查看全部 -
print命令和printf命令
查看全部 -
printf命令用法
查看全部 -
printf輸出格式說明
查看全部 -
printf格式化輸出
printf命令 --> 格式化輸出命令?
printf "輸出類型輸出格式" 輸出內容?
輸出類型:?
%ns:輸出字符串。n是數字,指代輸出幾個字符?
%ni:輸出整數。n是數字,指代輸出幾個數字?
%m.nf:輸出浮點數。m和n是數字,指代輸出的整數位數和小數位數。如%8.2f代表共輸出8位數,其中2是小數位數,6位是整數?
輸出格式:?
\a:輸出警告聲音?
\b:輸出退格鍵,也就是Backspace鍵?
\f:清空屏幕 \n:換行?
\r:回車,也就是Enter鍵?
\t:水平輸出退格鍵,也就是Tab鍵?
\v:垂直輸出退格鍵,也就是Tab鍵?
?printf '%s\t%s\t%s\n' 1 2 3 4 5 6 --> 此時才會正確輸出:?
1 2 3?
4 5 6?
使用printf輸出命令,必須明確指出所有的格式?
如果想要使用printf讀取文件中的內容就需要:
printf '%s' $(cat student.txt) ?不調整輸出格式?
printf '%s\t%s\t%s\t%s\n' $(cat student.txt) 調整輸出格式??
awk命令的輸出中支持print和printf命令?
print在輸出之后會在自動加入換行符,但Linux系統中默認沒有print命令?
printf是標準格式輸出命令,并不會自動加入換行符,如需換行,需要手動加入換行符
查看全部 -
cut [選項] 文件名?
-f 列號:提取第幾列(從1開始)?
cut -f 列號,列號 (多個列號用逗號隔開;這個方法默認的文件以TAB制表符)?
cut -f 列號,列號 -d "指定的分隔符" (比如圖中,以:為分隔符;列出第1,和第3列的內容)?
查看全部 -
grep行提取,cut列提??;?
cut [選項] 文件名?
-f 列號:提取第幾列(從1開始)?
cut -f 列號,列號 (多個列號用逗號隔開;這個方法默認的文件以TAB制表符)?
cut -f 列號,列號 -d "指定的分隔符" (比如圖中,以:為分隔符;列出第1,和第3列的內容)?
-d 分隔符:按照指定分隔符分割列 默認為tab制表符
grep "bin/bash" /etc/passwdgrep -v "root"cut -f 1 -d ":" 提取非root登錄用戶用戶名;
查看全部 -
正則實例
正則表達式適合在文檔中提取,不適合做寫入的判斷依據?
匹配日期:"[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}"?
匹配IP地址:"^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}"?
還可以匹配電話號碼、郵件地、URL地址信息等
匹配時間格式:grep "[0-9]\{4\}-[0-9]\{2\}-[0-9]\{2\}" test.txt?
匹配IP地址: ? ?grep "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" test.txt?
IP地址最大為255.255.255.255,所以這個正則只能用于從文檔中提取IP地址,不能用來寫入 vi清空所有行的快捷鍵:先d后G
查看全部 -
正則表達式規則
查看全部 -
1、轉義符“\”:讓特殊的符號喪失它的作用,只是表示這個符號本身
"\.$"? ?#匹配以.結尾的行
2、“\{n\}”:表示其前面的字符恰好出現n次
"a\{3\}"? ?#匹配a字母連續出現三次的字符串
"[0-9]\{3\}"? ?#匹配包含連續的三個數字的字符串,最好加上定界符,即左右加上匹配的字母,如"a[0-9]\{3,\}b",否則易匹配錯誤,因為正則是包含匹配
3、“\{n,\}”表示其前面的字符出現不小于n次
"^[0-9]\{3,\}[a-z]"? ?#匹配最少用連續三個數字開頭包含小寫字母的行
4、“\{n,m\}”匹配其前面的字符出現n-m次的行
"sa\{1,3\}i"? ?#匹配以s開頭、i結尾,且s和i之間有1-3個a的行
查看全部
舉報