Disabled/g' /etc/sysconfig/selinux # 匹配 ^ 开头字符为...-F ":" '{print $2}' | sed "s/ //g"` ; echo "网卡名为:"$eth ; echo "如果网卡名称不正确,修改 eth 变量中的NR==2 是列出所有网卡选择第二张...# awk -F ":" 以冒号为分隔符 ; 选择第一行,第二列,sed删除空格 # 符号 ; 分号表示第一条命令结束,...awk -F"=" 分隔符是冒号,打印第一行第二列 echo "使用变量‘$ip’传来的网卡名,再使用find 查看命令,'*$ip' 星号是网卡名前面还有字符模糊匹配。...done echo "GATEWAY="$gatewayset >> $ethCatalog # 只有一个网关和DNS,不能为1,否则无法连接
结尾的文件,其实就是目录) $标识以什么结尾, ^表示以什么开头 ls -d */ //列出所有目录 ll -S //按照文件大小排序...(有的行没有列数,就说明空行,使用NF判断打印非空) # awk -F: 'NF>0 {print NF}' /etc/passwd 打印带有固定标识的信息: # tail -5 /etc/passwd...BEGIN放在标识前面只打印头部标识 # uptime | awk '{print $3}' | sed 's/,//g' | awk -F: '{print "系统运行了:"$1"小时"$2"分"}...$标识以什么结尾;^标识以什么开头 检测根使用情况的脚本 #vim df.sh #/bin/bash disk=`df -H | grep /$ | awk '{print $5}' | cut -d...fi 输出当前监听的端口和服务;(BEGIN表示只在头部输出;在变量$1$2中间的\t必须使用双引号,否则就当字符串处理了) # netstat -antlp | grep LISTEN | awk
1,结果为1.否则为0 var^str # 异或运算符,比较var和str对应位,对于二进制来说如果二者互补,结果为1,否则为0 var|str...$1 : $2; print max}' # 条件判断 如果$1大于$2,max值为为$1,否则为$2 awk '{if ( $6 > 50) print $1...$1}' # 匹配Tom开头的行 打印第一个字段 awk '$1 !...awk '$4==90{print $5}' # 取出第四列等于90的第五列 awk '/^(no|so)/' test # 打印所有以模式no或so开头的行...5行到以no开头行之间的所有行 sed -i "/^$f/d" a # 删除匹配行 sed -i '/aaa/,$d'
如果字符的最后一个字节落在由 -b 标志的 List 参数指示的 范围之内,该字符将被写出;否则,该字符将被排除 实例 1、以字节定位 who|cut -b 3 o 2、以字符定位 who|cut -...开头的行 cat /etc/passwd |grep ^op operator:x:11:0:operator:/root:/sbin/nologin 6、查询匹配以bash结尾的行 cat /etc...例如 1,20s/old/new/g 就是啦 sed元字符 - ^ # 匹配行开始,如:/^sed/匹配所有以sed开头的行。 - $ # 匹配行结束,如:/sed$/匹配所有以sed结尾的行。...- \< # 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。 - \> # 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。...EOF 3 Do you like awk This's a test 10 There are orange,apple,mongo 5、过滤第一列等于2的行 cat << EOF | awk '
三剑客练习题 1、找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 # 第一种方式 [root@localhost ~]# grep -Ei '^s' /proc/meminfo...E '\ +' a.sh 11、过滤文件中以#开头的行,后面至少有一个空格 [root@localhost ~]# grep -E '^#\ +' a.sh 12、查询出/etc目录中包含多少个root...开头的行的最后一个词 [root@localhost /]# grep -E '^s' /etc/passwd|sed -r 's/[0-9a-zA-Z]+$//g' [file] 16、删除一个文件中的所有数字...开头的行到nobody开头的行 [root@web02 ~]# sed -r '/^bin/,/^nobody/d' /etc/passwd 19、从指定行开始,每隔两行显示一次 awk -F: '{if...(NR>3){num=(NR-3)%2; if(num){print $0}}}' /etc/passwd # 没写 20、每隔5行打印一个空格 [root@localhost /]# awk -F:
总共有7642行 这种格式文件一般需要写一个脚本去过滤掉无用的数据,可以发现这个文件有需要的数据有一些规律:w和> 都是想要数据,有了这个规律就好办了, 最终完成之后的数据如下: // 只提取了所有w开头的第...2行和第3行数据和> 开头的第1行数据 00 00 00 01 03 04 00 00 03 11 02 10 00 2c 08 ff ff ff 00 80 00 00 00 40 00 00 00...提取w和>开头的所有数据 $FILE=源文件 $PROCESS=处理之后的数据 #匹配第一行如果是w,则打印$2,$3,$4,如果第一行是>,则打印$2 awk '{if($1 ~/w/) print...$2,$3,$4; else if($1 ~/>/) print $2}' $FILE > $PROCESS 这里使用了if和else语句,如果$1(第1列)和w匹配,则打印 第2,3,4列 如果...开头的第2列和第3列 $PROCESS=只有w和>开头的数据 # 如果第一行是98,则打印第2.3行,否则打印第一行 awk '{if($1 ~ /98/) print $2,$3; else print
如果第一个域大于第三个域,$1就赋值给max,否则$3就赋值给max。 $ awk '$1 + $2 < 100' test。如果第一和第二个域相加大于100,则打印这些行。...几个实例 $ awk '/^(no|so)/' test-----打印所有以模式no或so开头的行。...$ awk '/^[ns]/{print $1}' test-----如果记录以n或s开头,就打印这个记录。...$ awk '/^root/,/^mysql/' test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的所有记录。...如果找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾。 14. awk编程 14.1.
'使用sed 去除以空格开头的行,第一个sort进行整理输出,uniq -c进行统计,sort -rn进行从大到小排列 # cat cat.ip | awk -F "|" '{print $1}' |...1 xxb 2 yangwa 注意:如果在脚本里面使用for(());do done循环 好像if(())也是这样子滴 确定字符串的长度:(awk,expr) #...cat hello | awk '{print length}' 打印每一行的字符长度(算之间的空格) #(expr length "$hello") 注意:hello是一个字符串变量 awk...*//g" ntp.conf 将配置文件中的#开头所有用空格代替(也可以实现上述功能) 但是上述两个都有弊端,就是输出有很多空格 sed+awk实现过滤空行和注释行; #sed "s/.../ {getline;print $1;}' 打印以daemon开头行的下一行(如果想打印后面几行可以getline;print $1) adm:x:3:4:adm:/var/adm:/sbin/nologin
14:defwerfgdsgf [root@xie-02 grep]# grep -v '^#' inittab |grep -v '^$' //去除所有空行和以 ‘#’ 开头的行 defwerfgdsgf...#qqefe #123123 [root@xie-02 grep]# grep '^[^a-zA-Z]' 1.txt //打印出不以大小写字符开头的行 123 4335 4576 #qqefe #123123...[root@xie-02 sed]# sed -n /t$/p test.txt //打印以 t 结尾的行 halt:x:7:0:halt:/sbin:/sbin/halt PS:不加脱义字符就加参数...//如果awk没有指定分隔符,会默认以空格,空白字符为分隔符去打印 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin [...把一个文件多行连接成一行 awk ‘{printf(“%s “,$0)}’ file // %s 后记得要有一空格,否则出来就是完全连在一起的,中间连空格都没有 cat file |xargs
txt结尾的文件;find /data/ -name “[A-Z]*” #查找/data/目录以大写字母开头的文件;find /data/ -name “test*” #查找/data/目录以test开头的文件...逐行处理直到文件末尾,然而如果打印在屏幕上,实质文件内容并没有改变,除非你使用重定向存储输出或者写入文件。...AWK基本原理是逐行处理文件中的数据,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则 继续处理下一行。...常用AWK工具企业演练案列: AWK打印硬盘设备名称,默认以空格为分割: df -h|awk ‘{print $1}’ AWK以空格、冒号、\t、分号为分割: awk -F ‘[ :\t;]’ ‘{print...匹配除了换行符以外任意一个字符;.* 代表任意字符;^ 匹配行首,即以某个字符开头;$ 匹配行尾,即以某个字符结尾;\(..\) 标记匹配字符;[] 匹配中括号里的任意指定字符,但只匹配一个字符;[^]
并打印出其中的每一行 包含单词“boo”: boot book booze boots 但是如果你操作的是大型文件,就会出现这种情况:如果这些行标识了文件中的哪一行,它们是什么,可能对你更有用,如果需要在编辑器中打开文件...commands …} 对于输入文件的每一行,它会查看是否有任何模式匹配指令,在这种情况下它仅在与该模式匹配的行上运行,否则它在所有行上运行。...所以说你想要每行以你的文件中的数字开头,并用括号括起该数字: sed -e 's/[0-9]*/(&)/' 其中 [0-9] 是所有个位数的 regexp 范围,而 '*' 是重复计数,表示任何数字的位数...所以,如果你想做一个所有的列表 你可以使用的子目录 ls -l | sed -n -e '/^d/ p' 因为长列表开始每行都带有 'd' 符号,如果它是一个目录,所以这只会打印出来那些以 'd' 符号开头的行...同样,如果你想删除所有以评论符号 '#' 开头的行,你可以使用 sed -e '/^#/ d' sampler.log 也可以使用范围表单 sed -e '1,100 command' sampler.log
~不包含 正则 awk正则 ^表示以....开头的行 某一列的开头 $3~/^oldoy/ $表示以.....结尾的行 某一列的结尾$4~/lidao$/ ^$表示空行 某一列是空的 很少用...#找出 第3列以2开头的行,并显示第1,3和最后一列 找出 第3列以1或2开头的行,并显示第1列,第3列和最后一列 还有这几种写法 3)表示范围 /哪里开始/,/哪里结束/ 常用...i in array) print array[i] awk数组专用循环,变量获取到的是数组的下标 #awk中字母 会被识别为变量,如果只是想使用字符串需要使用双引号引起来...awk 'BEGIN{a[0]=oldboy;a[1]=liao; print a[0],a[1]}' 所以无结果 数字和加双引号可以正常显示 awk数组专用循环打印 [root@heimajinpai...4.6 for循环 for n in 1 2 3 do echo $n done for(i=1;i<10;i++) do echo $i done for(i
如果存在则提示“用户存在”否则提示“用户不存在”。...如果数值符合,则执行对应的程序,如果数值不符,则依次比较下一个值。如果所有的值都不符合,则执行 “*)” (*代表所有其他值)中的程序。 case语句以“case”开头,以“esac”结尾。...,awk中,^则是匹配字符串的开始 ^tux匹配以tux开头的行 $ 匹配行尾,awk中,$则是匹配字符串的结尾 tux$匹配以tux结尾的行 ....如果条件符合,则执行动作,否则读入下一行数据。如果没有条件,则每行都执行动作。 4)读入下一行数据,重复执行以上步骤。...3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename 4、打印文本文件的总行数 : awk 'END{print NR}' filename 5、打印文本第一行
几个实例: $ awk '/^(no|so)/' test-----打印所有以模式no或so开头的行。...$ awk '/^[ns]/{print $1}' test-----如果记录以n或s开头,就打印这个记录。..."ok "$1: "error"$1)}' test-----如果第一个域大于5则打印问号后面的表达式值,否则打印冒号后面的表达式值。...$ awk '/^root/,/^mysql/' test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的所有记录。...如果找到一个新的正则表达式root开头的记录,则继续打印直到下一个以正则表达式mysql开头的记录为止,或到文件末尾。
,树状图将会以 pid (如果有指定) 如果有指定使用者 id,则树状图会只显示该使用者所拥有的行程。 ...-name "[a-z]*" # 在当前目录下查找所有以字母开头的文件 find /etc -name "host*" # 在/etc目录下查找以host开头的文件 find ....-type f |xargs ls -l linux中正则表达式与grep使用 常用正则: ^linux # 以linux开头的行 $php # 以php结尾的行 . # 匹配任意单字符 .+ # 匹配任意多个字符...(-v 取反) grep与正则结合 # 在file文件中找到以 linux 开头的行 grep -E '^linux' file # 在文件中查找以 linux 结尾的行 grep -E 'linux...: w|awk 'NR==1{print $6}' # 打印第一行,第六列的数据 cat /etc/passwd|awk -F":" '{print $1}' # -F指定以":"分隔,打印第一列数据
/etc/passwd 打印出文件中含有root的行 awk -F: '/'打印出文件中含有变量A的行 awk -F: '!...awk -F: '/^2[7]*/{print}' test 打印出文件中以27开头的行,如27,277,27gff 等等 awk -F: '$1~/root/{print...{print $2}}' /etc/passwd 如果第一个字段是mail,则打印第一个字段,否则打印第2个字段 格式化输出 awk '{printf "%-5s %.2d",2}' test printf...root 的行的第1和第7个字段 awk -F ":" '/root/{print 4、以 : 为分隔,显示/etc/passwd中以 root 开头行的第1和第7个字段 awk -F ":" '/^...bash的行的第1和第7个字段 awk -F ":" ' 7、以 : 为分隔,显示/etc/passwd中第7个字段不包含bash的行的第1和第7个字段 awk -F ":" ' 8、以 : 为分隔,显示
如下,如果有一个参数则赋值个sourceFile这个变量,否则用默认值。 Shell代码 1. 2. #!/bin/bash 3..UTF-8 4....关于if else: 如果两条命令写在同一行则需要用";"号隔开,一行只写一条命令就不需要写";"号了。和[命令一样,要注意命令和各参数之间必须用空格隔开。...//或者 regex = "2010-11-08.*" 备注:JAVA中匹配以“2010-11-08"开头的字符串。 ...Shell代码 1. 2. regex = "2010-11-08*" 备注:SHELL中匹配以“2010-11-08”开头的字符串。 ...tt.txt开头的N多个文件 -l 表示按行切割 tt.txt 表示切割后的零碎文件的前缀 29、循环读取行 读取文件每行并输出 方法一: Shell代码 1. #!
awk是什么 如果工作中需要操作linux比较多,那么awk是非常值得学习的 awk是一个极其强大的文本分析工具,把文件逐行的读入,以指定分隔符将每行切片,切开的部分再进行各种分析处理 可以使用awk...}' 这个命令的结果是只显示文件名列表 工作过程 awk命令接收 ll 结果信息,并逐行处理 对每一行结果记录按空格(空格是默认分隔符)分割,并打印出第9列的信息 语法说明 单引号('')里面的部分是...,第1列内容 + tab + 第6列内容 (3)awk -F: '/root/{print $0}' /etc/passwd 上两个命令是处理每一行记录,如果想过滤出自己关注的记录,可以使用匹配模式...这个命令就是对每行进行匹配,如果这一行信息中含有 root,才执行后面{}中的命令 双斜杠(/.../)中支持正则表达式,例如匹配以 root 开头的行 awk -F: '/^root/{print...中的条件语句是从C语言中借鉴来的,支持 if、while、do/while、for、break、continue --- 通过上面的几个例子,已经可以看到awk的概貌,也可以理解了为什么awk这么强大
如awk '$1 ~/^root/' test将显示test文件第一列中以root开头的行。 比较表达式(三元运算符) conditional expression1 ?...如果第一个域大于第三个域,$1就赋值给max,否则$3就赋值给max。 awk '$1 + $2 5 && $2 < 10' test:如果第一个域大于5,并且第二个域小于10,则打印这些行。...; ... }else{ statement; statement; ... } } 示例: #如果$1大于100则打印$1 bad,否则打印ok。...awk '{if ($1 > 100) print $1 "bad" ; else print "ok"}' test #如果$1大于100,则count加一,并打印$1,否则count减一,并打印
awk基本概念awk是基于列的处理工具,它的工作方式是按行读取文本并视为一条记录,每条记录以字段分割成若干字段,然后输出各字段的值。...awk -F "\t" '{OFS="\t"} {if ($4==3) $4=5}1' test.txt 上述命令指定输入分隔符为TAB,如果第4个字段为3,则将其替换为5,然后打印出来({}后跟1表示打印...下面展示一些不同的匹配的写法:打印域匹配的行 awk -F: '{if($3==0) print}' /etc/passwd 匹配大于7列的行,打印列数和整行 awk -F: 'NF>7 {...print NF,$0}' /etc/passwd 打印数字开头的行 awk '/^[0-9]/{print $0}' group.txt 匹配包含root或net或ucp的任意行 awk...(在文件名字后面加后缀.awk 翻遍区分)awk脚本文件开头一般都是这样的:#!
领取专属 10元无门槛券
手把手带您无忧上云