有意思的记录-shell(持续更新)

1.统计重复行的个数

sort uid.txt | uniq -c

2.查看压缩文件

cat *.gz | gunzip > 123

3.查看2个文件的交集、差集

comm用于比较两个有序文件,默认第一列为第一个文件独有的元素,第二列为第二个文件独有的元素,第三列为共有元素,语法:comm 选项 参数

-1:不显示在第一个文件出现的内容

-2:不显示在第二个文件出现的内容

-3:不显示同时在两个文件中都出现的内容

comm <(sort 1.txt| uniq) <(sort 2.txt | uniq)

grep -F -f 1.txt 2.txt | sort | uniq

两者交集,-F以行为单位进行查找,-f指明1.txt内容为要查找的pattern。

 grep -F -v -f 2.txt 1.txt | sort | uniq

-v显示查找不到的元素,即1.txt独有的元素(1.txt-2.txt)

4.sed使用

替换一个目录下所有文件中的某个pattern:

sed -i "s/pattern/newstr/g" `grep pattern -rl ./*`

将pattern替换为newstr

整行替换:

 sed -i 's/^flag.*$/flag : 0/g' file_name

将以flag开头的行替换为flag : 0

删除特定行:

sed -i '/^列王的纷争/d' test1

删除以列王的纷争开头的行

sed -n '2,$p' test.txt

打印test.txt的第二行到最后一行,$意为最后一行。-n表示不打印编辑行,不带n,每行会被打印2次。 

5.算数计算

expr/$(())只能用于整数的计算,浮点的计算可以使用awk,bc

nn=`echo $linenum | awk '{print $1 * 0.01}'`

awk求列和:

awk -F"\t" 'BEGIN{total=0}{total+=$1}END{print total}'

6.find使用

find . -name '*.txt'

查找当前目录下所有子目录下txt类型的文件

nice -n 19 ionice -nr6 find buslog.* -type f -mtime +$i  -delete -print >> days_rm_log.log  2>&1 

删除某些过期文件:mtime 表示最后修改时间,i表示第几天,可以用个循环,删除以前的多少天记录;nice/ionice用于命令降级,以免影响其他服务

查找文件,找到后并进行其他操作。格式为:

find path 参数 pattern -exec 命令

find cache_log -name cache_log_*.log -exec rm -rf {} \;
find rotate_group_log -name rotate_group.log -exec mv {} rotate_group_log/rotate_group.log.$yesterday \;

其中{}是find命令的结果,用于输入参数传入下一命令;但是每个命令都要以\;结束

7.查看端口占用进程

netstat -anp | grep port
lsof -i :port

a:显示所有套接口;n:显示网络ip;p:显示pid和进程名

查看占用端口port的进程

lsof -p pid | grep IPv4
lsof -i | grep pid

以上2条命令都用于查看进程pid打开的网络连接

8.进程间通信查看

ipcs(interprocess communication facilities status):展示共享内存(-m)、信号量(-s)、消息队列信息(-q)

ipcrm(remove an XSI message queue, semaphore set, or shared memory segment identifier)

ipcrm [ -q msgid | -Q msgkey | -s semid | -S semkey | -m shmid | -M shmkey ]

10.查找某进程

ps -eo cmd | grep -x "bin/test"
根据执行命令查找进程是否存活,避免根据名字查找的不规范。-x整行匹配, ps -eo只显示cmd

11.shell读文件

k=1
while read line;doecho "Line # $k: $line"((k++))
done < $FILE
echo "Total number of lines in file: $k"

12.sort

sort -k3 -nr app_downinfo2015-06-02.txt > app_sort
文件按空格分割,第三列按照降序排列
sort -t $'\t' -k2,2 down_0722_uniq 
分隔符指定为tab,按第二列排序

13.随机抽取若干行

awk 'BEGIN{srand();while (n<500){num=int(rand()*30546)+1;if (!(num in a)) {a[num]=1;n++}}}NR in a' game_similar.txt > training_data.txt
game_similar.txt共30546行,从中随机选择500行

14.日期

日期转换为时间戳
date +%s
date -d '2015-07-30 20:05:02' +%s
分别获得对应的时间戳1438257971、1438257902

时间戳转化为日期,如下获得2015-07-30 20:05:02
date -d @1438257902 +"%Y-%m-%d %H:%M:%S"

日期加减

#20150816
date -d '-30 days' +%Y%m%d
#20150914
date -d 'yesterday' +%Y%m%d
#20150914
date -d '-1 day' +%Y%m%d
#20150916
date -d '+1 day' +%Y%m%d

15.xargs

将前面的参数列表,一行一行的传给后面的命令
cat test.txt | xargs -i date -d @{} +"%Y-%m-%d %H:%M:%S"
把test.txt里每行的时间戳转化为日期,-i 选项告诉 xargs 用每项的名称替换 {},如果参数是在命令最后面的就不需要-i,如rm
查找某路径下的文件内容
find . -name "*.xml" | xargs grep "hadoop.tmp.dir"

16.awk获取shell外部变量

a=300
awk -v b=$a 'BEGIN{print b}'

17.正则表达式提取

从log中提取versionCode字段
grep -Eo "versionCode=[0-9]+" msearchgame.log

18.shell for循环

#1到10
for i in `seq 10`
do
done
#静态语言用法
for ((i=1; i<= 10; ++i))
do
done
#for in
for i in {1..10}
do
done

19. 字符串比较

[ ] 是条件判断,–eq/–ne/-gt/-ge/–lt/-le用于整数的比较,那浮点数和字符串的比较呢?、
#1.转义的比较符 \< \>
[ 'a' \< 'b' ] && echo 'ok'
[ 'abc' \> 'a' ] && echo 'ok'
#2.双括号[[ ]]
[[ 'a' < 'b' ]] && echo 'ok'
[[ 'abc' > 'a' ]] && echo 'ok'
[[ 3.5 < 7.6 ]] && echo 'ok'
#字符串包含判断,是否包含wo
[[ 'hello word' =~ wo ]] && echo 'ok'

20.awk正则表达式

awk '$0 ~ /^[1-9]/' subject

打印以数字开头的行

21.awk去重

$0做为下标,没有出现的时候a[$0]为0,出现一次后就会+1

awk '{if(! a[$0]++){print $0}}'

转载于:https://www.cnblogs.com/whuqin/archive/2012/08/23/4982037.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296689.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html怎么快速打出来的,javascript – 快速打印HTML5画布

我搜索了很多,找到了一个完美的解决方案:)使用onclick事件function printCanvas(){var dataUrl document.getElementById(anycanvas).toDataURL(); //attempt to save base64 string to server using this varvar windowContent ;windowContent windowContent Print canvas…

OutOfMemoryException异常解析

一、概述在国庆休假快结束的最后一天晚上接到了部门老大的电话&#xff0c;某省的服务会出现崩溃问题。需要赶紧修复&#xff0c;没错这次的主角依旧是上次的“远古项目”没有办法同事都在休假没有人能帮忙开电脑远程只能打车去公司。远程链接上服务器之后查看日志发现抛出的堆…

LeetCode:Largest Number - 求整型数组中各元素可拼合成的最大数字

2019独角兽企业重金招聘Python工程师标准>>> 1、题目名称 Largest Number&#xff08;求整型数组中各元素可拼合成的最大数字&#xff09; 2、题目地址 https://leetcode.com/problems/largest-number/ 3、题目内容 英文&#xff1a;Given a list of non negative i…

js实现样式切换

2019独角兽企业重金招聘Python工程师标准>>> <ul id"styles"> <li id"default">经典</li> <li id"blue">淡蓝</li> <li id"brown">棕色</li> </ul> $("#styles li&…

CV算法面试题学习

本文记录了CV算法题的学习。 CV算法面试题学习 1 点在多边形内&#xff08;point in polygon&#xff09;2 高斯滤波器3 ViTPatch EmbeddingPosition EmbeddingTransformer Encoder完整的ViT模型 4 SE模块5 Dense Block6 Batch Normalization 1 点在多边形内&#xff08;point …

tinyid 教程_tinyid

软件简介tinyid 是滴滴开发的 id 生成器 分布式id生成系统&#xff0c;简单易用、高性能、高可用的id生成系统。提供的 REST API&#xff1a;nextId:curl http://localhost:9999/tinyid/id/nextId?bizTypetest&token0f673adf80504e2eaa552f5d791b644cresponse:{"data…

【推荐软件】wingrep

linux下搜索文本中的字符串时&#xff0c;习惯了find和grep的结合&#xff0c;很强大&#xff0c;但是windows下没有这两个命令&#xff0c;不用IDE编程时搜索略显不便。google一下&#xff0c;原来有wingrep工具可以用&#xff0c;可以实现相同的功能&#xff0c;来推荐一下给…

flash如何转html5,闪客精灵如何将Flash格式转换成HTML5

如何将Flash格式转换成HTML5?闪客精灵就是为Flash格式转换为HTML5而生的&#xff0c;他能够快速的将任何Flash文件&#xff0c;不管是SWF还是EXE格式的Flash格式转换成能被HTML5识别的HTML格式的文件。那么如何用闪客精灵将Flash格式转换为HTML5呢?下面是关于闪客精灵将Flash…

一壶 100℃ 的开水从多高倒进嘴里不会觉得烫?

全世界只有3.14 % 的人关注了爆炸吧知识先说结论&#xff1a;大约50米左右。 水从高空落下&#xff0c;先倒的水快&#xff0c;后倒的水慢&#xff0c;所以必然很快撕裂&#xff0c;成为细小的水滴。因此&#xff0c;这里就只讨论水滴的散热问题&#xff0c;而不考虑一大团水的…

Shell特殊变量

$ 表示当前Shell进程的ID&#xff0c;即pid $echo $$运行结果 2934特殊变量列表 变量含义$0当前脚本的文件名$n传递给脚本或函数的参数。n 是一个数字&#xff0c;表示第几个参数。例如&#xff0c;第一个参数是$1&#xff0c;第二个参数是$2。$#传递给脚本或函数的参数个数。…

当你的技术债务到期时,LinkedIn的故事 | IDCF

原文&#xff1a;https://www.linkedin.com/pulse/when-your-tech-debt-comes-due-kevin-scott/译者&#xff1a;冬哥那是 2011 年 10 月&#xff0c;就在 LinkedIn 上市后的第二次财报发布之前的几周。LinkedIn的业务做得很好&#xff0c;从任意可见角度来衡量&#xff0c;可以…

Libsvm分类步骤

1. 样本集的整理&#xff1a;提取特征&#xff0c;以LIBSVM指定格式存储。2. 特征的标准化处理&#xff1a;特征的缩放Scaling&#xff0c;避免量纲的影响。3. 选择合适的核函数类型4. 优选核函数的参数与C采用&#xff1a;交叉验证(或留一法)、grid-search5. 基于优选的参数&a…

ant vue 语言_Ant Design Vue是什么

Ant Design Vue 是蚂蚁金服 Ant Design 官方唯一推荐的Vue版UI组件库&#xff0c;组件的风格与Ant Design保持同步&#xff0c;组件的html结构和css样式也保持一致。Ant Design Vue 是遵循 Ant Design 的 Vue 组件库。是蚂蚁金服 Ant Design 官方唯一推荐的 Vue 版 UI 组件库&a…

再现神人!仅仅只花4天半就解开了史上最难密码,这下整个圈子都炸开了.........

全世界只有3.14 % 的人关注了爆炸吧知识鲁迅先生曾说&#xff0c;记录这东西&#xff0c;就是用来打破的。前阵子程序员圈子一定热呼的不可开交&#xff0c;咋回事&#xff1f;还不是因为有个程序员妹子捅出了一个大篓子。事情是这样的&#xff0c;在德国慕尼黑有一个名叫 Leah…

布鲁克大学计算机科学,布鲁克大学计算机科学本科.pdf

布鲁克大学计算机科学本科.pdf留学监理服务网布鲁克大学计算机科学 - Computer Science基本信息所属学校 布鲁克大学 - Brock University 所在院系 数学与科学学院 - 计算科学系专业名称 计算机科学 - Computer Science 学历层次 本科计算机与信息科学 计算与计算授予学位 计算…

HDU 1856 Brave Game(巴什博奕)

Brave Game Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3175 Accepted Submission(s): 2105 Problem Description十年前读大学的时候&#xff0c;中国每年都要从国外引进一些电影大片&#xff0c;其中有一部…

拥抱开源!除了微软红帽,这些国际大厂你认识几个?

在上世纪 90 年代&#xff0c;开源操作系统 Linux 出现时&#xff0c;有能力自行安装使用的用户并不多。因此&#xff0c;早期开源社区和开源软件厂商的一大工作就是向用户售卖书籍&#xff0c;提供初始的技术支持。比如基于 Linux 的内核&#xff0c;一批开源软件厂商开发出不…

J2EE第五课Servlet随课笔记

把上课笔记全上传到博客中&#xff0c;二原因&#xff1a; 1 方便自己以后查阅&#xff0c;看得多&#xff0c;记得多 2 提供一些笔记给刚学JAVA的朋友&#xff0c; 笔记&#xff1a; 1 1、什么是Servlet? 2 是运行于服务端&#xff08;java服务器&#xff09;的一个jav…

乒乓球单循环赛_乒乓球淘汰赛制和单循环赛制的比赛方法是什么?

展开全部一、乒乓球淘汰赛制比赛方法&#xff1a;1、32人先进行1轮淘汰赛&#xff0c;获胜的16人进入胜62616964757a686964616fe78988e69d8331333431363531者组&#xff0c;失败的16人进入败者组2、败者组第一轮&#xff1a;16人参赛&#xff0c;失败的8人被淘汰&#xff0c;胜…

详解Oracle DELETE和TRUNCATE 的区别

语法delete from aa truncate table aa 区别 1.delete from后面可以写条件&#xff0c;truncate不可以。2.delete from记录是一条条删的&#xff0c;所删除的每行记录都会进日志&#xff0c;而truncate一次性删掉整个页&#xff0c;因此日至里面只记录页释放&#xff0c;简言之…