awk grep 以某个特定字母开头 shell 常用操作

判断文件夹是否存在

if [ ! -d "data" ];then
  mkdir data
else
  echo "file folder already exists"
fi

shell 接收命令行参数

$0是程序名,$1之后是参数, ${10}要加花括号。当命令行参数有空格时,用双引号包起来。
在test.sh文件中这样写,就可以运行 sh test.sh zhihu看到输出 zhihu
运行 sh test.sh "zhihu ha"就可以看到输出zhihu ha

name=$1
echo $name

shell 替换字符 sed

sed 's/A/B/'
将A替换为B
比如将文件中的括号和逗号去掉

cat test.txt | sed 's/(//' | sed 's/)//' | sed 's/,//' > out.txt

每行仅替换第一个符合要求的,如果需要多个替换 需要sed 's/A/B/g'

cat test.txt | sed 's/(//g' | sed 's/)//g' | sed 's/,//g' > out.txt

shell 取特定的列 awk

awk -F ',' '{print $1","$4}' test.txt
将以逗号为分隔符的数据test.txt 中第一列和第四列取出来。其中去掉 -F ','表示文件默认分隔符为空格,多个空格会被认为为一个空格处理。

awk 条件判断和循环

以BEGIN{初始变量;作为分隔符}{循环体 条件判断 }END{结束处理}的形式处理整个文件

awk 'BEGIN{a=0;b=0
;c=0;}{if($1==0) a+=$2; if($1==2) b+=$2; if($1==4) c+=$2}END{print a, b, c}' test.text 

对test.txt 只有两列数据的文件,对第一列为0 2 4的数据行进行第二列的累加求和函数

复杂处理,原始test.txt格式为逗号分隔,每一行有多条数据。

0 1 2 3,2 1 1 4,4 1 2 3
1 1 1 3,1 0 0 3

先以换行符替换掉,号,然后进行统计即可。

cat test.txt | sed 's/,/\n/g' | awk -F' ' '{if($3>=1) print $1,$3}' | awk 'BEGIN{a=0;b=0
;c=0;}{if($1==0) a+=$2; if($1==2) b+=$2; if($1==4) c+=$2}END{print a, b, c}'

grep 用法

筛选以特定字母开头

以r或者R开头的

cat test.spice | grep ^[rR].*

统计以r或者R开头的行数

cat test.spice | grep ^[rR].* | wc -l

不 以r或者R开头的 使用-v参数

cat test.spice | grep -v ^[rR].*

统计不同字符 并计数 uniq -c

查看 test.spice文件【cat test.spice】中以i或者I开头的行【| grep \^[iI].*】,输出以空格分隔的第四个参数【| awk '{print $4}'】,输出不同字符 并且统计个数【|uniq -c

cat test.spice | grep ^[iI].* | awk '{print $4}' | uniq -c

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值