相比於vim, sed和awk指令能夠處理及其巨大的文件而不會發生崩潰的狀況正則表達式
sed 【選項】 '[n1 [,n2]] 行爲' 【文件】 sed 【選項】 '/pattern/ 行爲' 【文件】 #對正則匹配的行執行操做 sed 【選項】 'n1,+N 行爲' 【文件】 #對n1行及其後的N行執行操做 sed 【選項】 -e '[n1 [,n2]] 行爲' -e '[n1 [,n2]] 行爲' 【文件】 #執行多個操做 選項: -n 安靜模式。只顯示sed操做打印出的行(默認是顯示 sed操做後結果文件的全部行 + sed操做打印出的行)。 -e 動做表達式,默認 -f 文件指定動做表達式 -r 使用擴展正則 -i 直接寫入源文件,不輸出屏幕 n1,n2 指定做用行號 每一個操做都必須用單引號括起 行爲: a [字符串] 追加到下行 i [字符串] 插入到上行 c [字符串] 替換行 d 刪除行 p 打印行 s 替換 例子(如下示例只是打印結果, 若要寫入文件則加 -i 選項): sed '3,$d' filename #刪除3行至最後 sed '/patern/d' filename #刪除正則匹配patern行 sed '/patern1/,/patern2/s/aa/bb/' filename #patern1匹配行至patern2匹配行間作aa->bb替換 sed '3a *** ###' filename #3行後追加一行*** ### sed '3a *** \ @@@' #追加兩行字符,必須 \ 結尾 sed '3,$c ***' filename #替換3行至最後爲*** sed -n '3,5p' filename #打印第三行至第五行, -n選項必選 sed 'n1,n2s/from/to/g' filename #指定行內查找替換, 沒有指定行則全文替換
awk 'pattern1 {動做1} pattern2 {動做2} ...' filename #當前行知足pattern條件則執行動做 pattern: 連續條件 pattern_a, pattern_b 邏輯運算 || && ! 比較運算 > < >= <= == != BEGIN 讀取行以前 END 讀取行結束後 /reg/ 正則表達式 內置變量: NF #當前行的字段數 NR #當前是第幾行 FS #當前的分隔符,默認爲 空格符 或 製表符 $0 #當前整行數據 $1, $2, ... #第一,二 ... 字段 注意: 整個操做必須單引號括起 打印字符串值必須雙引號括起 動做內的多個子動做可用;或者ENTER分離 例子: awk '{print $1 "\t" $3 "\t line:" NR}' file #打印1,3列及行號 awk 'BEGIN {FS=":"} $3<10 {print $1}' #初始化:爲分隔符。若當前行第三列小於10則打印第一列 awk 'NR>=1 {out=$1+$3;printf "%10d %10d %10d \n",$1,$3,out}' #第一行後,打印第1、三列及求和值
diff 行比較指令vim
diff 【選項】 oldfile newfile 選項: -i #大小寫不敏感 -b #忽略不一樣數目空白符的區別 -B #忽略空白行的區別 ##比較兩個目錄包含文件差別 diff 目錄a 目錄b
vimdiff 指令較diff更直觀spa
vimdiff oldfile newfile
cmp 字節比較指令code
##顯示第一處不一樣字節 cmp file1 file
製做補丁遞歸
diff -Naur oldfile newfile > patchfile diff -Naur olddir newdir > patchfile -N 缺失文件認定爲空文件 -a 使用文本文件格式 -u 使用合併格式的diff -r 遞歸
打補丁字符串
單個文件打補丁: patch 【oldfile 【patchfile】】 目錄打補丁: 進入舊目錄所在的同級目錄 patch -Np0 < patchfile -N 明確指明爲應用補丁 -p0 忽略0個層次的搜索路徑, 由於已在舊目錄同級目錄。 -pN 表示當前目錄下, 須要忽略補丁文件裏目標文件路徑信息的頭N層,再進行當前目錄下對目標文件的搜索
新文件補丁還原爲舊文件awk
單個文件還原補丁: patch -R 【patched_oldfile 【patchfile】】 目錄還原補丁: 進入新目錄所在的同級目錄 patch -Rp0 < patchfile -R 明確指定爲還原補丁 -p0 忽略0個層次的搜索路徑, 由於已在舊目錄同級目錄