Linux Shell脚本攻略笔记4之让文本飞

4 篇文章 0 订阅
4 篇文章 0 订阅
grep
-E  拓展  == egrep
$ grep -E "[a-z]+" filename
-v  反向匹配
-c  统计匹配行数并非次数
$ echo -e "1 2 3 4\nhello\n5 6"|grep -c "[0-9]"       --> 2
l$ echo -e "1 2 3 4\nhello\n5 6"|grep -o "[0-9]" |wc -l   匹配项的个数
-n  显示行号
-b -o
$ echo gun is not linux |grep -b -o "not"   匹配字符的偏移量
-i  忽略大小写
-e  匹配多个样式
-q  静默输出
$ seq 10 | grep 5 -A2     5 6 7 
$ seq 10 | grep 5 -B2    3 4 5 
$ seq 10 | grep 5 -C2    3 4 5 6 7
递归搜索文件-R -r 
$ grep "text" . -R -n

使用0字节为后缀
$ grep "test" file* -lz | xargs -0 rm 


cut
提取特定字段或者列
$ cut -d":" -f 2,3 fileanme

按字符截取
$ echo asdfghjkl | cut -c2-5


sed 
替换
$ cat 1.sh |sed 's/done/DONE/g'  > newfile.txt     g表示全局   4g表示从第4处匹配替换

删除空白行
$ sed 's/^$//g' A.txt
$ sed '/^$/d' A.txt

替换文本中3位数字
$ sed 's/\b[0-9]\{3\}\b/666/g' A.txt    \b 表示单词边界

&标记已经匹配的
$ echo this id ok | sed 's/\w\+/[&]/g'    \w\+ 匹配每一个单词
[this] [id] [ok]

(\1)
$ echo HELLO world | sed 's@\([A-Z]\+\) \([a-z]\+\)@\2 \1@g'
world HELLO


awk
基本结构
awk ' BEGIN{ print "start"} pattern { commands } END{ print "end"}' file

$ awk 'BEGIN{i=0} {i++} END{print i}' A.txt 
l$ echo | awk '{var1="v1";var2="v2";var3="v3"; print var1 "-" var2 "-" var3;}'
v1-v2-v3


NR  记录的数量
NF  字段数量
$0  当前行文本内容
$1  第一字段内容
$ echo -e " line1 f2 f3\n line2 f4 f5\n line3 f6 f7"|awk '{print NR,$1,$2,$3}'

打印第2、3字段
$ awk '{print $2,$3}' awk.txt

求和
$ seq 8 | awk 'BEGIN{sum=0;print "Summation"} {print $1 "+";sum+=$1;} END{print "==";print sum;}'

$ seq 5 |awk 'BEGIN{getline;print "head of file:",$0} {print $0}'
head of file: 1
2
3
4
5


匹配
awk 'NR < 5'  行号小于5
awk 'NR==1,NR==4'   行号在1-5之间
awk '!/linux/'  不包含linux的行

指定分隔符
$ awk -F: 'END{print NR}' /etc/passwd
$ awk 'BEGIN{FS=":"} {print NR}' /etc/passwd

打印第n行
$ seq 100 |awk 'NR==4,NR==10'
== $ seq 100|sed -n '4,10p'


合并文件paste
$ paste A.txt B.txt -d':'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值