本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
shell判断变量的值是否为空方法判断一个脚本中的变量是否为空,我写了一个这样的shell脚本:#!/bin/sh#filename: test.shpara1=if [ ! -n $para1 ]; then echo "IS NULL"else echo "NOT NULL"fi然后把该脚本:test.sh通过chmod +x 改为可以执行的脚本,执行后输出的结果为: NOT NULL很是奇怪,最后,通过查询一些资料发现,|可以通过如下方式判断一个shell变量是否为空:1. 变量通过" "引号引起来      如下所示:,可以得到结果为 IS NULL.#!/bin/shpara1=if [ ! -n "$para1" ]; then echo "IS NULL"else echo "NOT NULL"fi2. 直接通过变量判断      如下所示:得到的结果为: IS NULL#!/bin/shpara1=if [ ! $para1 ]; then echo "IS NULL"else echo "NOT NULL"fi3. 使用test判断    得到的结果就是: dmin is not set! #!/bin/shdmin=if test -z "$dmin"then echo "dmin is not set!"else echo "dmin is set !"fi4. 使用""判断#!/bin/shdmin=if [ "$dmin&...
如何在Linux中查找和删除空目录和文件 1. 使用 find -empty 查找当前目录中的空目录: $ find . -type d -empty 2. 使用以下命令删除当前目录下的所有空目录: $ find . -type d -empty -exec rmdir {} \; 3. 使用 find -empty 查找当前目录中的空文件: $ find . -type f -empty 注: 通常,某些程序会将空文件创建为占位符、锁定文件或用于通信的套接字文件。 4. 当前目录(和子目录)下有多少个空文件?要计算当前目录下的空文件数,请将 find 命令通过管道传送到 wc -l。 $ find . -type f -empty | wc -l 5. 当前目录(和子目录)下有多少个非空文件? $ find . -type f -not -empty | wc -l 注: Find 选项 -not 会还原其后面的选项。 在上面的所有示例中,将 ( . ) 点替换为要搜索文件的任何其他目录路径。
正则表达式及文本处理三剑客 前言 一、正则表达式 基本正则表达式元字符: 扩展正则表达式元字符(需要egrep或者转义) 二、文本处理三剑客 grep sed awk 前言 玩转Linux操作系统必须会shell,会shell必须知道正则表达式及grep、sed、awk文本处理三剑客。好多年前有个大佬告诉我,不知道正则不要说自己会Linux,为此我专门学习这部分内容,这篇文章是对我学习内容的整理,也是我经常查阅的一篇笔记,也希望他可以帮助到...
linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计去除重复行sort file |uniq 查找非重复行sort file |uniq -u 查找重复行sort file |uniq -d 统计sort file | uniq -c 去除重复的行,并生成新的文件sort file |uniq > new_file
 
0
1、新建一个文本文档touch test.file2、在指定行前插入 一行内容:sed -i 'ni\x' test.file        表示向test.file文件里的第n行的前面添加x内容sed -i 'na\x' test.file       表示向test.file文件里的第n行的后面添加x内容sed -i '/m/i\x' test.file     表示向test.file文件里匹配m字符串的行的前面添加x内容sed -i '/m/a\x' test.file    表示向test.file文件里匹配m字符串的行的后面添加x内容标红的 -i 这个参数意味着在源文件上进行修改,而不是产生新文件3、在指定行后插入多行内容没有发现很好的方法首先,将需要插入的内容写道一个txt里sed -i '/ str/r a.txt' test.file 表示向test.file文件里匹配到str的行后加a.txt里面的内容
shell中删除文件中重复行的方法Linux下文本处理工具很丰富很强大,例如这样一个文件:复制代码代码如下:cat logwww.jb51.net 192.168.1.1www.jb51.net 192.168.1.1www.jb51.net 192.168.1.2ffffffffffffffffffffffffffffffffffffeeeeeeeeeeeeeeeeeeeefffffffffffffffffffeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeegggggggggggggggggggg可用以下方法去除重复行:1.使用uniq/sort删除重复行注意:单纯uniq是不行的。复制代码代码如下:shell> sort -k2n file | uniq > a.out这里我做了个简单的测试,当file中的重复行不再一起的时候,uniq没法删除所有的重复行。经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。2.使用用sort+awk命令注意:单纯awk同样不行,原因同上。复制代码代码如下:shell> sort -k2n file | awk '{if ($0!=line) print;line=$0}'也可以使用 awk '!i[$1]++' log;3.用sort+sed命令,同样需要sort命令先排序。复制代码代码如下:shell> sort -k2n file | sed '$!N; /^\(.*\)\n\1$/!P; D'
shell:awk筛选出文本中指定列字符串长度为指定长度的行$num=2awk -v x=$num '{if(length($2)<=x){print $0}}' text.txt#在text.txt中筛选出第二列字符串长度小于等于2的行#其中在中文的一个汉字长度为3
 
0
shell 8种字符串截取方法假设有变量 var=http://www.aaa.com/123.htm.1. # 号截取,删除左边字符,保留右边字符。1echo ${var#*//} 其中 var 是变量名,# 号是运算符,*// 表示从左边开始删除第一个 // 号及左边的所有字符即删除 http://结果是 :www.aaa.com/123.htm2. ## 号截取,删除左边字符,保留右边字符。1echo ${var##*/} ##*/ 表示从左边开始删除最后(最右边)一个 / 号及左边的所有字符即删除 http://www.aaa.com/结果是 123.htm3. %号截取,删除右边字符,保留左边字符1echo ${var%/*} %/* 表示从右边开始,删除第一个 / 号及右边的字符结果是:http://www.aaa.com4. %% 号截取,删除右边字符,保留左边字符1echo ${var%%/*} %%/* 表示从右边开始,删除最后(最左边)一个 / 号及右边的字符结果是:http:5. 从左边第几个字符开始,及字符的个数1echo ${var:0:5} 其中的 0 表示左边第一个字符开始,5 表示字符的总个数。结果是:http:6. 从左边第几个字符开始,一直到结束。1echo ${var:7} 其中的 7 表示左边第8个字符开始,一直到结束。结果是 :www.aaa.com/123.htm7. 从右边第几个字符开始,及字符的个数1echo ${var:0-7:3}&nbs...
有的时候需要对文件执行删除删除操作,这个时候比较常用的会使用vi命令中的dd命令,比如先执行10G(跳转到第10行),然后再执行20dd(删除20行),但实际情况未必是这么常规,比如说,要删除文件中,某行长度超过200个字符的行,如果文本比较小,还好,如果是几万行,几十万行的呢? 这个想用vi就不现实了。 我然想到的办法就是:比如说,通过sed,awk,egrep命令来达到目的。 举个简单例子。假如说如下文本文件,要将其中长度为5字符以上的给删除掉。root@linux# cat data 1 22 333 4444 55555 666666 7777777 88888888 方法一: 使用awk命令的length()函数root@linux# cat data | awk '{if (length($0) <=4 ) print $0}' 1 22 333 4444 方法二: 使用grep命令 root@linux# cat data | egrep -w '^.{1,4}' 1 22 333 4444 方法三: 使用sed命令root@linux# cat data | sed -n '/^.\{5,\}/!w NewFile' root@linux# cat NewFile 1 22 333 4444备注:1. 使用awk,grep命令的时候,可以将处理好的文件重定向到另外一个新文件中2. egrep -w参数,表示仅跟模式匹配的单词3. ^. 表示以任意字符开头的行,这个和-w命令匹配使用,这个很关键,否...
 
0

Linux Shell 函数

发表者:admin分类:Shell脚本2020-10-15 16:09:25 阅读[650]
Shell 函数linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:[ function ] funname [()] { action; [return int;] }说明:1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。2、参数返回,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255下面的例子定义了一个函数并进行调用:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com demoFun(){ echo "这是我的第一个 shell 函数!" } echo "-----函数开始执行-----" demoFun echo "-----函数执行完毕-----"输出结果:-----函数开始执行----- 这是我的第一个 shell 函数! -----函数执行完毕-----下面定义一个带有return语句的函数:#!/bin/bash # author:菜鸟教程 # url:www.runoob.com funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum ...
    总共5页,当前第1页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5