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

有意思的记录-shell(持续更新)相关推荐

  1. Android 学习记录(持续更新)

    Android 学习记录(持续更新) 1.AndroidManifest.xml 详解: http://www.jb51.net/article/73731.htm (AndroidManifest. ...

  2. Vue3中使用Monaco Editor代码编辑器记录~持续更新

    Vue3中使用Monaco Editor代码编辑器记录-持续更新 因为毕设需要用到代码编辑器,根据调研,我选择使用monaco-editor代码编辑器 前端框架使用Vue3 + elementUI m ...

  3. Laya小游戏上架Vivo平台踩坑记录(持续更新)

    Laya小游戏上架Vivo平台踩坑记录(持续更新) 个人踩坑的一些记录,大佬留情! 一些快捷键: Ctrl+P 搜索脚本文件 Ctrl+Y 恢复操作 Ctrl+Z 撤回操作 Ctrl+F 搜索字段 C ...

  4. Windows11 Android开发相关记录(持续更新...)

    Windows11 Android开发相关记录(持续更新-) 本章节主要记录安装好Windos系统后开发环境搭建及其心得. 以及开发常用软件和相关配置. 以下属于个人做法,仅供参考: 文章目录 Win ...

  5. Laya小游戏上架Oppo平台踩坑记录(持续更新)

    Laya小游戏上架Oppo平台踩坑记录(持续更新) 个人踩坑的一些记录,大佬留情! 一些快捷键: Ctrl+P 搜索脚本文件 Ctrl+Y 恢复操作 Ctrl+Z 撤回操作 Ctrl+F 搜索字段 C ...

  6. flutter boost使用简介(踩坑记录,持续更新)

    前言 最近在研究android和flutter的混合开发.插件模式调用原生的混合模式已经在项目中使用,也暴露出一些问题, 最突出的问题就是flutter中对webview的支持,会出现各种各样奇怪的问 ...

  7. 测试开发工程师成长日记018 - 测试面试必备题记录(持续更新)

    技术模块 一.在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试? 建立测试计划,确定测试标准和测试范围 设计典型场景的测试用例,覆盖常用业务流程和不常用的业务流程等 ...

  8. Android Performance Patterns 系列视频学习记录(持续更新中)

    系列文章旨在记录YouTube上谷歌发布的Android Performance Patterns系列视频,一共79个视频,每个视频也就几分钟.当然对于大部分安卓开发者来说,这些都是基础,可能你会说, ...

  9. 持续学习常用网站汇总记录(持续更新)

    文章目录 一 内容创作分享类 1 CSDN 2 简书 二 保持编程手感类 1 力扣(LeetCode) 2 C语言网 三 学习网站类 1 网易公开课 2 网易云课堂 3 中国大学MOOC 四 拓宽眼界 ...

最新文章

  1. 街头篮球服务器未响应,鹊桥相会《街头篮球》8.12七夕版本预告
  2. linux centos 没有service命令 安装方法
  3. UILable的text设置中划线(删除线)
  4. 安徽计算机应用基础高考试题,安徽省对口高考试题(计算机应用基础部分)
  5. 论文浅尝 | 远程监督关系抽取的生成式对抗训练
  6. React中使用Ant Table组件
  7. python多进程管道通信(精)
  8. jQuery 2.0.3 - 整体架构
  9. c语言中缀表达式求值_[源码和文档分享]基于C++的表达式计算求值
  10. ESP32(NodeMCU-32S)简单实现路由中继/wifi中继
  11. 基于FPGA的帧差法仿真实现
  12. 23个机器学习最佳入门项目(附源代码)
  13. 关于信贷评分卡模型,看这篇就够了!
  14. Go --- html/template模板包的使用
  15. [ 代码审计篇 ] 代码审计思路 详解
  16. 以CS1237为例来看ADC芯片两个基本指标
  17. 谷歌提出Flan-T5,一个模型解决所有NLP任务
  18. 【Proteus仿真】Arduino UNO+uln2003驱动步进电机+按键启保停正反转控制
  19. 串列配置(Tandem)在Kintex-7互联TRD中的实现
  20. 母版页(Master Pages)

热门文章

  1. Java技术:SpringBoot实现邮件发送功能
  2. 网络知识:详解各种路由器组网方法!
  3. 数据库优化:8 种常见的SQL错误用法
  4. 后端:循环遍历的用法介绍
  5. Vim和Vi的常用命令
  6. stm32超声波测距代码_干货!特斯拉Autopilot核心传感器解读超声波雷达篇
  7. Linux上线程开发API概要(线程)
  8. 50行代码串行Promise,koa洋葱模型原来这么有趣?
  9. 如何从零开始开发一个 Chrome 插件?
  10. SQL Server 连接超时案例一则