工作常用的一些脚本处理办法

VIM

set modifiable 解决文件不能编辑的问题;

替换使用%s,%表示在整个文件中替换,如果要在指定某几行替换,可以使用:
:5,15s/dog/cat/g
在当前行到文件末尾完成替换:
:.,$s/dog/cat/g

grep

选项
-m
-n 输出行号
-i 忽略大小写
-r 指定某个搜索目录
-w 只匹配某个单词,而不是字符串的一部分,如只匹配magic而不匹配magical
-l 列出匹配的文件名
-L 列出不匹配的文件名
-m 5,当匹配内容的行数达到5行后,grep停止搜索,并输出停止前搜索到的匹配内容
-q 安静模式,如果有匹配到值则立即返回状态值0
-v 用于查找不包含该pattern的内容

AWK

AWK语法由一系列条件和动作组成,动作在花括号内,在花括号内可以有多个动作,多个工作之间用分号分割,在多个动作和动作之间可以有若干个空格,也可以没有:
awk [选项] ‘pattern1{cmd1} pattern2{cmd2} …’ file
如果没有指定pattern,则该cmd会针对该行所有数据,如果没有指定cmd,则默认为print;

AWK会把文件逐行读入,以空格为默认分隔符将每行内容切片(awk自动将连续的空格理解为分隔符),切开后的内容再进行各种处理:
例如
cat file | awk ‘NR=1||NR3{print}’
这样命令会输出文件file的第一行和第三行内容;

输出奇数行:
cat file1 | awk ‘(NR%2)==1{print}’

输出以Error开头的
cat file1 | awk ‘/^Error/{print}’

每行内容切割后被赋予到变量$1、$2…,其中$1代表第一列,$2代表第二列;

替换域分隔符
awk -F “域分隔符” ‘’{cmd1;cmd2} file

$0代表所有域,也就是本行内容;
使用分号隔开的cmd1和cmd2会先后执行;

AWK 文本替换

具体格式为
sub(/regexp/, replacement,target)
第三个参数target,如果忽略则为$0,也就是本行内容;
使用方法为:
awk ‘{sub(/AAA/, aaa, $2); print $2d}’ test.txt

split 函数

基本格式为
split($0,a,“:”)
$0代表所有域,拆分后的数组为a,使用:进行分割;

SED

Cshell

echo

使用echo函数可以将指定内容打印到文件中,例如
echo “helo” > a
使用>的话,改文件中的内容会被覆盖;
echo “halo” >> a
使用>>的话,原文件中内容不会被覆盖,会在原文件内容基础上添加内容;

wc

wc用于计算字数;
-l 用于计算行数;例如统计当前目录下txt文件:
ls *.txt | wc -l
也可以用于统计文件a的行数
cat a.txt | wc -l

常用变量

$? 用于判断变量是否存在,如果存在返回1,不存在返回0;
$# 传递给shell脚本的参数的数量;
$* 传递给shell脚本参数的内容;
$1、$2… 运行脚本时传递给其的参数,这些参数用空格隔开;
$? 命令执行后返回的状态;
$0 当前执行的进程名;

操作符

-e 判断对象是否存在,-exist
-d 判断对象是否为目录
-f 判断对象是否为文件
-r 判断文件是否可读
-w 判断文件是否可写
-x 判断文件是否可执行

传递参数

shell的传递参数放在数组argv中;
可以通过argv[1]…等来访问数组中的元素;

dirname & basename

dirname 用于获取文件或者目录的上一级目录
basename用于打印文件或者最后一集目录的名称

CAT & ZCAT

cat用于一次显示整个文件,zcat用于显示压缩文件;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值