linux命令2(交差,grep,awk相关)

本文介绍了一系列Shell脚本实用技巧,包括时间字符串比较、机器码计数、文件内容替换等,通过具体示例展示了awk、sed等工具的强大功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可以直接进行比较时间字符串,按照字符串的字典序。

 awk '{if ("15:21:14" <= $1 && $1 <= "15:51:14") {print $0}}'


机器码首位为“0、1、2”的数量,看到一个简便方法:grep -c '^[0-2]' 

awk如何取第一列

cat  abc.txt | awk -F '' '{if($1=="d"||$1==1||$1=="c") print $0}'

替换文件夹下包含字符串的文件

sed结合grep

例:要将目录/www下面所有文件中的old都修改成new,这样做:


sed -i "s/old/new/g" 

一行连续输入多列

cat ie*2012122911 | awk ' { for(i=13;i<=(NF-1);i++) printf $i""FS; print "" }' |


类型数量计算

cat  data/log_config_20121217newsemini |grep Id=2837 |awk -F 'Type='  '{print $2}' | awk -F '[ &]' '{a[$1]+=1}END{for(i in a){print i,a[i]}}' |sort -k 2 -rn

计算版本号的用户数并进行排序:

awk -F 'v=' '{print $2}' | awk -F '[& ]' '{a[$1]+=1}END{for (i in a){print i,a[i]}}' | sort -k2 -rn 

rpm -qa | grep redis | xargs rpm -ql

 

计算机器码的数量

 cat uid_c.exe  |  > uid_c

计算时间和对应的机器码,多个机器码只保留第一次出现的机器码和时间

cat  desktopbar_exit.txt  | awk '{print $2,$5}' | sed 's/&h=/ /' | sed 's/&r=/ /'  | awk '{print $1,$3}' > exit_time_uid.txt


得到的文件格式如下:

[12/Nov/2012:01:28:50 022F0A61F197A0C53D3176BFEA32F339

[12/Nov/2012:08:20:22 023D1164922CA28D7D2D6354CE3E2804

[12/Nov/2012:00:58:28 024C6604A7FD1FEFA55AC6C9818C7917

用以下命令来进行操作:

sort -k2   run_time_uid.txt  | uniq -f 1 

对第二列机器码进行排序,然后忽略掉第一列的时间,只保留一个机器码,这样就只保留时间最早的那个机器码和对应的时间了。

根据版本找到渠道号的命令:

cat startup_log_*| grep 'v=0.2808' | awk -F 'r=' '{print $2}' | awk -F '&' '{a[$1]+=1}END {for(i in a) {print i,a[i]}}' | sort -k2 -rn>aa.txt

根据渠道号找到版本号的命令:

cat startup_log_* | grep r=6164 |  awk -F 'v=' '{print $2}' | awk -F '&' '{a[$1]+=1}END {for(i in a) {print i,a[i]}}'| sort -k2 -rn  > aa.txt

查询大于3.2版本小于3.2.0.4716版本的所有版本数

ls startup_uid_uniq_initiative_7days_3.2.* | awk -F '.' '{if($NF<4716) print $0}'     

计算页面的uv:

cat officialweb_log_* | grep 'pl=Ftg%2Fmkt.html' | awk -F '&u=' '{print $2}' | awk -F '[& ]' '{print $1}' | sort | uniq | wc -l

计算页面的uv:

find /root/workspace/workspace/loglib0229/*  | xargs grep "山东"


1)是按顺序记录的 ,比如u=后边是r=


求交集:grep -F -f inst_uid_uniq startup_uid_uniq_initiative | sort | uniq >common_new_initiative_log


求差集:grep -F -v -f common_new_initiative_log startup_uid_uniq_initiative| sort | uniq > uid_uniq_initiative_old


求交集的个数:grep -F -f inst_uid_uniq startup_uid_uniq_initiative | wc -l


uniq必须是两个已经排序过的文件吗?

sort 的文件对内存有大小限制吗?

2)

将三个文件合并,去掉重复的记录,归并,求并集

cat file0.txt file1.txt file2.txt |awk '{a[$1]}END{for(l in a){print l}}'|wc -l  


cmd = "cat " + accumulation_startupandexit_file_today + " | awk -F ':' 'BEGIN{SUM1=0;SUM2=0}{SUM1+=$1;SUM2+=$2}END{if(SUM1==0){print 0}else{print (SUM1-SUM2)/SUM1}}'"

shell按年月日显示日期:`date +%Y%m%d`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值