三剑客

 grep

3.主要参数

[options]主要参数:

-a

或--text 不要忽略二进制的数据。

-A

<显示列数>或--after-context=<显示列数> 除显示符合范本样式的那一列之外,并显示该列之后的内容。

-b

或--byte-offset 在显示符合范本样式的那一列之前,标示出该列第一个字符的位编号。

-B

<显示列数>或--before-context=<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前的内容。

-c或--count

计算符合范本样式的列数。

-C

<显示列数>或--context=<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d

<进行动作>或--directories=<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e

<范本样式>或--regexp=<范本样式> 指定字符串做为查找文件内容的范本样式。

-E或--extended-regexp

将范本样式为延伸的普通表示法来使用。

-f

<范本文件>或--file=<范本文件> 指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

-F或--fixed-regexp

将范本样式视为固定字符串的列表。

-G或--basic-regexp 将范本样式视为普通的表示法来使用。

-h或--no-filename 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H或--with-filename 在显示符合范本样式的那一列之前,表示该列所属的文件名称。

-i或--ignore-case 忽略字符大小写的差别。

-l或--file-with-matches 列出文件内容符合指定的范本样式的文件名称。

-L或--files-without-match 列出文件内容不符合指定的范本样式的文件名称。

-n或--line-number 在显示符合范本样式的那一列之前,标示出该列的列数编号。

-q或--quiet或--silent 不显示任何信息。

-r或--recursive 此参数的效果和指定“-d recurse”参数相同。

-s或--no-messages 不显示错误信息。

-v或--revert-match 反转查找。

-V或--version 显示版本信息。

-w或--word-regexp 只显示全字符合的列。

-x或--line-regexp 只显示全列符合的列。

-y 此参数的效果和指定“-i”参数相同。

--help 在线帮助。

常用选项:#######################################################

-E :开启扩展(Extend)的正则表达式。

  -i :忽略大小写(ignore case)。

  -v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。

  -n :显示行号

  -w : 被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker

  -c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。

  -o :只显示被模式匹配到的字符串。

  --color :将匹配到的内容以颜色高亮显示。

  -A n:显示匹配到的字符串所在的行及其后n行,after

  -B n:显示匹配到的字符串所在的行及其前n行,before

  -C n:显示匹配到的字符串所在的行及其前后各n行,context

################################################################

 

pattern正则表达式主要参数:

\: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

\<:从匹配正则表达 式的行开始。

\>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

。:所有的单个字符。

* :有字符,长度可以为0。

 

sed

2、sed命令功能

[option]

-e 以选项中指定的script来处理输入的文本文件。

-f 以选项中指定的script文件来处理输入的文本文件。

-h或H显示帮助。

-n 取消默认的完整输出,仅显示script处理后的结果。

-i :直接修改读取的文件内容,而不是输出到终端。

-r 启用扩展正则

-V 显示版本信息。

[动作命令]

a 新增,a后接字串,并在新一行出现。

“a\” 最后一行新增字串。

c 取代,用此符号后的新文本替换当前行中的文本。

d 删除行

i 插入,i 的后面可以接字串。

p 打印,常与“sed -n”连用。

s 取代,与g连用,常与正则表达式搭配使用,例如例如1,20s/old/new/g。

n 读入下一输入行,并从下一条命令而不是第一条命令开始对其的处理。

q 结束或退出sed。

w 将所选的行写入文件。

r 从文件中读取输入行。

y 将字符替换为另一字符,正则表达式除外。

l 列出非打印字符,包括控制字符。

-iSUFFIX 修改源文件,同时创建一个备份文件。例如:sed -i.bak '1,10d' test,生成一个test.bak备份文件。

#打印第二行
sed -n '2p' 1.txt 
      
#打印第2行到第十行内容
sed -n '2,10p' 1.txt 
      
#删除第n行
sed -n '2d' 1.txt
#删除包含关键字的行
sed -i -e '/string/d' fine
#替换
(不修改源文件)
sed 's/旧内容/新内容/g' 1.txt
(修改源文件)
sed -i 's/旧内容/新内容/g' 1.txt
#修改并备份
sed -i.bak '1,3s#docker02#docker#g' test.txt
#特殊符号& 代表被替换的内容
sed -r '1,3s#(.*)#--&--#g' test.txt
#文件另存为
sed 'w a.txt' test.txt
#特殊符号= 获取取行号
sed '=' test.txt
#一条sed语句执行多条sed命令
sed -i -e '19d;1,3s#docker#docker02#g' test.txt
#打印不可见字符l 和cat -A 一样效果
sed -n 'l' test.txt

awk

ARGC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 支持队列中系统环境变量的使用

FILENAME awk浏览的文件名

FNR 浏览文件的记录数

FS 设置输入域分隔符,等价于命令行 -F选项

NF 浏览记录的域的个数

NR 已读的记录数

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符

BEGIN 表示在处理任意行之前进行的操作。

END 表示在所有输入行处理完后进行处理。

 

$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。

$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数

awk -F '\t' 'BEGIN { OFS="\t" } NR>153&&NR<172 {print $1,$8,$23}'
指定输入分隔符:-F ‘\t’
指定输出分隔符:BEGIN { OFS="\t" }
指定行数(从153行到172行):NR>153&&NR<172
打印指定列:print $1,$8,$23
打印第n行
awk 'NR==2' /etc/passwd
打印第2行到第十行内容
awk 'NR==2,NR==5' /etc/passwd
倒数第二列
awk -F"/" '{print $(NF-1)}' /etc/passwd
#打印第2行第4列的
free -h|awk -F' '  'NR==2 {print $4}'
已:为分隔符打印第三

 

find

find ./ -name “*.txt” | xargs rm     #(删除当前目录下所有以txt结尾的文   
find  /home   -size   +512k          #      查大于512k的文件
find  /home   -size   -512k          #    查小于512k的文件
find  /home   -links   +2            #   查硬连接数大于2的文件或目录
find  /home   -perm   0700           #   查权限为700的文件或目录
find  /   -amin    -10       # 查找在系统中最后10分钟访问的文件
find  /   -atime   -2        # 查找在系统中最后48小时访问的文件
find  /   -empty             # 查找在系统中为空的文件或者文件夹
find  /   -group   cat       # 查找在系统中属于 groupcat的文件
find  /   -mmin   -5         # 查找在系统中最后5分钟里修改过的文件
find  /   -mtime   -1        #查找在系统中最后24小时里修改过的文件
find  /   -nouser            #查找在系统中属于作废用户的文件
find  /   -user    fred      #查找在系统中属于FRED这个用户的文件
find ./   -maxdepth 1 -name "*.txt"  ##最大深度为1  
find ./   -not -name "a.txt"         ## 排除a.txt  
find ./ ! -name "a.txt"              #可以使用!代替 -not
find ./ -name "*.txt" -o -name "*.csv" ## 当使用多个条件进行查找时,加-o实现“或者”  

 

 

posted @ 2022-12-21 15:48  jinqiu001  阅读(39)  评论(0)    收藏  举报