相比于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个层次的搜索路径, 由于已在旧目录同级目录