本站用于记录日常工作内容,虚拟化云计算,系统运维,数据库DBA,网络与安全。
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 阅读[438]
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 ...
 
0

AWK中使用 while,for 循环

发表者:admin分类:Shell脚本2020-07-21 11:02:21 阅读[433]
Using Loops (while, for) in awk scripts,AWK中使用 while,for 循环 The awk programming language contains many of the programming concepts that are used in shell scripting. Conditionals, such as the if statement and loops, such as the following can also be used in awk programming.The while loopThe do while loopThe for loopThe if StatementThe if statement can have two branches: an if branch and an else branch. If the condition is true, the if branch is executed; if the condition is false, the else branch is executed.if (condition) { statements } else { statements }You can nest if statements. When examining nested if statements and one or more of the if statements has an else statement, it is difficult to know with which if the else is operating. The simple rule is: Each else works on the closest if that does not yet have its own else; for example:if (condition) { if (condition) { statements } else { statements } }In th...
    总共6页,当前第1页 | 页数:
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6