shell 命令记录

sed 命令

# 删除匹配行及上一行
sed -i -n '$!N;/匹配内容/!P;D' 待处理文件

# 删除包含 happy 的行,同时删除这行的后面 2 行和上面 3 行
sed -i ‘/happy/,+2d;:go;1,3!{P;N;D};N;bgo’ report.cfg

# 删除 happy 第一次出现的行
sed '0,/happy/{//d}' file

# 删除匹配行到下面 n 行
sed -i '/happy/,+9d'

# 删除匹配行的下一行到最后一行
sed '/happy/{p;:a;N;$!ba;d}' test

# 删除匹配行的下一行
sed '/匹配内容/{n;/想要删除行的内容/d}'

# 将 b 文件的内容添加到 a 文件的 xxxx 的前一行
sed -i  '/xxxx/ {h;s/.*/ cat b.txt/e;G}' a.txt

# 将 b 文件的内容添加到 a 文件的 xxxx 的后一行```
sed -i  '/xxxx/ {p;s/.*/ cat b.txt/e}' a.txt

# 删除匹配行及上一行
sed -i -n '$!N;/匹配内容/!P;D' 待处理文件

# 删除包含DATA Partition的行,同时删除这行的后面2行和上面3行
sed -i ‘/a/,+2d;:go;1,3!{P;N;D};N;bgo’ report.cfg

## 匹配AAA和BBB之间的数据
sed -n '/AAA/,/BBB/p' a.txt

awk 命令

# 匹配
# awk 统计 file1 中数据在 file2 中出现的次数 注意:数据量如果达到 4Gb 以上或者行数达到一亿级别,建议将file2 进行 split 分割, 否则就算是 32G 的内存的机器都会被吃掉;
awk 'NR==FNR{a[$1]=1}NR>FNR&&a[$1]>0{print $0}'  file1 file2 | wc -l
# 如果file1、file2中,2 个文件的第一列第二列值相同, 输出第 2 个文件的所有列
awk 'NR==FNR{a[$1" "$2]=1}NR>FNR&&a[$1" "$2]>0{print $0}'  file1 file2 | wc -l
# 比较两个文件中, 当第一列值相同时, 对比第二列值
awk '{if(NR==FNR){a[$1]=$0}else{a[$1]=a[$1]"|"$2}}END{for(i in a){print a[i]}}' a.txt b.txt

# 分组求和
# 统计 a 文件中, 第一列的值相同时, 第二列相加
awk '{sum[$1]+=$2}END{for(c in sum){print c,sum[c]}}' file1
# 统计 a 文件中, 第一列, 第二列的值相同时, 第三列相加
awk '{s[$1" "$2] += $3}END{ for(i in s){  print i, s[i] } }' file1
# 统计 a 文件中, 第一列的值相同时, 求第二列平均值
awk -F"," '{sum[$2]+=$3;a[$2]++}END{for(c in sum){printf("%s %10d\n", c,sum[c]/a[c])}}' file1
# 查找文件并使用 awk 匹配内容, 并打印匹配内容的下一行
find /etc/ -type f | xargs awk '/hello/ {getline; print}'

shell 脚本常用功能记录

# 统计 a 文件中数据在 b 文件中出现的次数
for i in `cat a.txt`
do
	num=`grep $i b.log|wc -l`
	echo $i $num
done

# case 使用方法
## 在循环过程中, 跳出循环使用 break(跳出循环) 或者 continue(跳出当前循环), 
case $1 in
value1)
	echo I am value1
;;
value2)
	echo I am value2
esac
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值