Linux体系机构中的公共函数库和shell编程

1、使用echo $SHELL 查看当前的shell版本

2、通过cat /etc/shells 查看本机器支持的shell版本

3、chsh -s 后接shell路径

一、如何找到特定的文件

find

语法:find path [options] params

作用:在指定的目录下查找文件

例:

1)、查找当前目录下的target3.java文件

find -name "target3.java"

2)、从根目录查找target3.java文件

find / -name  "target3.java"

3)、查找当前用户的home目录下,以target打头的文件

find ~ -name “target*”  ---“*” 通配符

find ~ -iname “target*”  ---"-i"不区分大小写

二、检索文件内容

1、grep

语法:grep [options] pattern file

全称:Global Regular Expression Print

作用:查找文件里符合条件的字符串

例:

1)、从target打头的文件中查找,包含“moo”字符串的行

grep "moo" target*

 

2、管道操作符|

可将指令连接起来,前一个指令的输出作为后一个指令的输入

例:

1)、从根目录查找以target开头的文件

find ~|grep "target"

2)、从bac-plat-al-data.info.log中查找partial[true]的行

grep 'partial\[true\]' bac-plat-al-data.info.log

3)、从2)的结果中查找engine的信息,engine由数字和字母组成

grep 'partial\[true\]' bac-plat-al-data.info.log| grep -o 'engin\[[0-9a-z]*\]'

4)、查看当前tomcat的进程,grep -v 过滤掉当前的指令

ps -ef| grep tomcat |grep -v "grep"

使用管道注意的要点:

a)、只处理前一个命令正确输出,不处理错误的输出

b)、右边命令必须能够接收标准输入流,否则传递过程中数据会被抛弃

例:find ~|grep "target" |echo 不会输出任何数据

c)、常用来接收管道的命令有sed,awk,grep,cut,head,top,less,more,wc,join,sort,split等

三、对文件内容做统计

awk

语法:awk [options] 'cmd' file

1)、一次读取一行文本,按输入分隔符进行切片,切成多个组成部分

2)、将切片直接保存在内建的变量中,$1,$2...($0表示行的全部)

3)、支持对单个切片的判断,支持循环判断,默认的分隔符为空格

例:

1)、筛选出netstat.txt中的第一列和第四列

awk ‘{print $1,$4}’ netstat.txt

2)、在1的基础上进一步过滤,筛选出Proto为tcp并且Recv-Q等于1的列

awk '$1="tcp" && $2==1{print $0}' netstst.txt

显示第一行

awk '($1=="tcp"&& $2==1) || NR==1 {print $0}' netstat.txt

3)、awk默认分隔符是空格“ ”,现在以“,”为分隔符打印出第二列

awk -F "," '{print $2}' test.txt

4)、打印出partial为true并且以engine分组,统计出现的次数

grep 'partial\[true\]' bac-plat-al-data.info.log| grep -o 'engin\[[0-9a-z]*\]'|awk '{enginearr[$1]++} END {for(i in enginearr) print i "\t" enginearr[i]}'

四、批量替换文件的内容

sed

 语法:sed [option] 'sed command' filename

1)、全名stream editor,流编辑器

2)、适用用于对文本的编辑

例:

1)、修改头部“Str”,改为“String”

sed -i ‘s/^Str/String/’ replace.java

2)、修改每一行最尾部的“.”改成“;”

sed -i 's/\.$/\;/' replace.java

3)、将每一行的"jack"替换成"me"

sed -i 's/jack/me/g' replace.java  --如果不加g,将替换每一行首次出现的jack

4)、依据某规则删除数据;删除空行

sed -i '/^ *$/d' replace.java             --此时没有前面的s了,因为s是对字符串的操作

5)、删除包含Integer的行

sed -i '/Integer/d' replace.java

转载于:https://www.cnblogs.com/dasha/p/10859137.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值