0
点赞
收藏
分享

微信扫一扫

Awk & Sed关于字符串的一些操作

彪悍的鼹鼠 2021-09-19 阅读 48

  Linux里面一切皆文件,那么像awk、sed等一些文本处理工具命令集,就需要知道一些awk、sed的基本操作;本文列举比较简单常规操作,例如awk有一套自己的编程体系可写以awk结尾的文件,就像CentOS7.6安装gfio图形工具一文中的fio文件类似,这里就不展开了。

sed-替换文件内容

#文件内容全部替换,string-->sed
> sed -i 's/string/sed/g' Filename

sed--删除行

#删除字符串的行
> sed -i '/***/d' Filename
> sed -i “/$variate/”d Filename
#删除行数
> sed -i 'Nd' Filename  #删除第N行
> sed -i 'N,Md' Filename  #删除第N-M行
> sed -i “${var1},${var2}d” Filenane
#删除固定的字符
> sed 's/..//g' file.txt  #删除前两个字符
> sed 's/.\{5\}//g' file.txt  #删除前五个字符
> sed 's/..$//g' file.txt  #删除最后两个字符
> sed 's/.a//g' file.txt  #删除字符a以及a前面的任一字符
> sed 's/a.//g' file.txt  #删除字符a以及a之后的任一字符

awk自带变量&字符集

#awk部分变量
ARGC:   命令行参数的个数
FNR:    各文件分别计数的行号
NR:     行号,当前处理的文本行的行号
FS;-F:  输入字段分隔符, 默认为空白字符
OFS:    输出字段分隔符, 默认为空白字符
ARGV:   数组,保存的是命令行所给定的各参数
RS:     输入记录分隔符(输入换行符), 指定输入时的换行符
NF:     当前行的字段的个数(即当前行被分割成了几列),字段数量
ORS:    输出记录分隔符(输出换行符),输出时用指定符号代替换行符

#字符集
[[:alpha:]] <==> 文字字符            [[:digit:]] <==> 数字字符
[[:lower:]] <==> 小写字符            [[:upper:]] <==> 大写字符
[[:cntrl:]] <==> 控制字符            [[:punct:]] <==> 标点字符 
[[:blank:]] <==> 定位字符            [[:graph:]] <==> 非空字符、非空格控制
[[:print:]] <==> 非空包括空格        [[:space:]] <==> 所以空白、新行、空格、制表字符
[[:alnum:]] <==> [a-z0-9A-Z]        [[:xdigit:]] <==> 十六进制

awk-正则字符串匹配

#指定列的字符串匹配
> awk '$x ~ /***/ {for(i=NF-1;i>1;i--)printf($i);}' Filename
#不做任何限制的匹配
> awk '/***/ {for(i=NF-1;i>1;i--)printf($i);}' Filename
#两者满足其一即可,$string是引用变量匹配
> awk -F '[[:punct:][:space:]]+' '/***/ || /'$string'/{print $1}' Filename
#文件的$1列与“string”匹配,打印$2列数据
> awk -F '[[:punct:][:space:]]+' '$1==string{print $2}' Filename
#两者都满足即可,$1列为“root”,$5列为“var”都满足条件后,打印$0列内容
> awk -F '[[:punct:][:space:]]+' '($1==“root”)&&($5==“var”) {print $0}' Filename
#awk嵌套,L的作用就是获取行号并加3,然后打印L行的$1列的内容
> Lat=`awk -F '[[:space:]],:()=]+' -v L=$(awk '/'$Str'/{L=NR+3;print L;}' $RWFile) 'NR==L{print $1}' $RWFile`
#若是使用一些特殊符号,需转义,如下所示
> Lat=`awk -F '[[:space:]],:()=\\[\\]]+' -v L=$(awk '/'$Str'/{L=NR+3;print L;}' $RWFile) 'NR==L{print $1}' $RWFile`

awk-引用变量

声明:本人所写的只是本人在使用中遇到的问题做个记录总结,很多内容也是百度,或者查阅官方文档,若与他人有重复;若需按照本文配置,请认真确认是否适合你的情况,造成一切损失;本人概不负责。

举报

相关推荐

0 条评论