sed、grep、awk

如string.txt文件是这样的

zhangsan
13554442907
lisi
13619299998
xiaowang
15128392967
laoma
18192266211
zhaosi
15528224682

将string.txt改成如下

zhangsan:13554442907
lisi:13619299998
xiaowang:15128392967
laoma:18192266211
zhaosi:15528224682
sed 'N;s@\n@:@' string.txt
字符串 var=http://www.aaa.com/root/123.htm
取出 www.aaa.com/root/123.htm
echo $var|awk -F// '{print $2}';echo $var|grep -o 'www.*htm';echo $var|sed -r 's@[^/]+//(.*)@\1@'
取出 123.htm
echo $var|awk -F/ '{print $NF}';echo $var|grep -o "123.htm";echo $var|sed -r 's@([^[:digit:]]*)(.*)@\2@'
取出 http://www.aaa.com/root
echo $var|grep -o 'http.*root';echo $var|sed -r 's@(.*)/(.*)@\1@';
取出 http
echo $var|awk -F: '{print $1}';echo $var|grep -o "http";echo $var|sed -r 's@([^:]+)(.*)@\1@'
取出 http://
echo $var|grep -o "http://";echo $var|sed -r 's@(.*//)(.*)@\1@';echo $var|awk -Fwww '{print $1}'
取出 www.aaa.com/root/123.htm
echo $var|grep -o 'www.*';echo $var|sed -r 's@([^w]+)(.*)@\2@';echo $var|awk -F// '{print $2}'
取出 123
echo $var|tr -c -d '[0-9]\n';echo $var|grep -oE '[0-9]{3}'

找出b文件在a文件中的相同行,不同行

cat a
张三
李四
王五
赵六

cat b
小明
小红
张三
赵六

awk 'FNR==NR{a[$0];next}{if($0 in a)print $0}' a b
awk 'FILENAME=="a"{a[$0]=1}FILENAME=="b" && a[$0]==1{print $0}' a b
awk 'ARGIND==1{a[$0]=1}ARGIND==2 && a[$0]==1{print $0}' a b
张三
赵六

找出b文件在a文件中的不同行
awk 'FNR==NR{a[$0]=1;next}a[$0]!=1{print $0}' a b
awk 'FILENAME=="a"{a[$0]=1}FILENAME=="b" && a[$0]!=1{print $0}' a b
awk 'ARGIND==1{a[$0]=1}ARGIND==2 && a[$0]!=1{print $0}' a b
小明
小红

合并文件

[root@apenglinux-002 ~]# cat a
张三 男
李四 女
王五 男
赵六 女
[root@apenglinux-002 ~]# cat b
张三 22
李四 29
王五 18
赵六 25

awk 'FNR==NR{a[$1]=$0;next}{print a[$1],$2}' a b
awk 'FILENAME=="a"{a[$1]=$0}FILENAME=="b"{print a[$1],$2}' a b
awk 'ARGIND==1{a[$1]=$0}ARGIND==2{print a[$1],$2}' a b
张三 男 22
李四 女 29
王五 男 18
赵六 女 25

同一文件中同一ip的服务合并

cat a
192.168.1.1:  httpd
192.168.1.1:  tomcat
192.168.1.2: httpd
192.168.1.2: postfix
192.168.1.3: mysqld
192.168.1.4: httpd

awk 'BEGIN{FS=":";OFS=":"}{a[$1]=a[$1] $2}END{for(v in a)print v,a[v]}' a
192.168.1.1:  httpd  tomcat
192.168.1.2: httpd postfix
192.168.1.3: mysqld
192.168.1.4: httpd

转载于:https://blog.51cto.com/13480443/2088215

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值