bash 实用技巧

一..将文件的内容赋给一个变量:

  file=$(cat filelist)

       file=$(< file)

NOTE:后者性能比前者好

二..bash 分组匹配:

HOSTNAME='mysql-10=='

[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[0]};echo $VAR
-10==
[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[1]};echo $VAR
10
[root@node2 ~]# [[ $HOSTNAME =~ -([0-9]+)(.*) ]];VAR=${BASH_REMATCH[2]};echo $VAR
==

三..命令替换:

1.$(ls)

2.`ls`

 

四.新开一个子shell执行命令:

(umask 000;mkdir hello;mkdir word)

创建了两个目录,权限都为777

 

五.set

set -x 以debug模式执行shell,显示执行过程

set -e 如果某一条shell出错就不再往后继续执行

 

正则表达式:

[[space:]]          #空白字符

[[:digit:]]            #数字

[[:alnum;]]         #数字和字母

[[:punct:]]          #标点符号

[[:lower:]]          #小写字母

[[:upper:]]         #大写字母

[[:alpha:]]         #大小写字母

.                      #匹配单个字符

*                     #匹配前面字符任意次

.*                     #匹配任意长度字符,也包含空行

\?                   #匹配前面字符一次或零次

\{m,n\}           #匹配前面字符至少M次,最多n次

\(ab\)             #分组匹配,主要用于搭配后项引用,前面匹配到什么,后面就引用什么(eg:grep "\(l..e\).*\1$" test    #匹配以括号中匹配到的内容结尾的行)

位置锁定:

  ^            #行首(如果出现在'[ ]'中,则表示排除,eg grep '[^1-2]' test,表示排除除了1和2的行)

       $            #行尾

      ^$           #空行

      \<           #词首

      \>           #词尾

 

grep参数:
-i          #忽略大小写

-n        #显示行号

-c        #统计符合条件的行

-v        #排除符合条件的行

-An     #打印符合条件行及下面的n行

-Bn     #打印符合条件行及上面的n行

-Cn     #打印符合条件的行及上下n行

egrep:

+           #匹配前面字符至少一次

?           #匹配前面字符一次或零次

{m,n}  #匹配前面字符至少m次,最多n次

(a|b) #匹配a或b

 

sed:

参数:

-n 静默模式,不再显示模式空间的内容

-i  直接应用在文件中生效,如果不加-i,只是输出到屏幕而不应用到文件

-r 使用扩展正则表达式

-f 保存至文件执行

sed '/hello/a\test' test   #在匹配到内容的下一行追加指定内容

sed 's/hello/&test/' test #在匹配到的内容后追加新内容

wd 's/hello/test&/' test  #在匹配到的内容前追加新内容

sed '1i\test' passwd      #在第一行前面添加test

sed '1a\test' passwd     #在第一行后面添加test

sed -n '1'p passwd       #打印第一行

sed '1w test' passwd    #将第一行内容写到test中

sed '1r test' passwd     #将test中的内容添加到第一行后面

sed 's/test/TEST/'g test     #将test中的test换位大写的TEST

NOTE:sed中/可以用@或者#代替

eg:

sed 's#test#TEST#'g test

sed 's@test@TEST@'g test

 

替换字符位置:

#cat test

three one

 

sed 's/\(three\)\(.*\)\(one\)/\3\2\1/' test

res:  

one three

转载于:https://www.cnblogs.com/dufeixiang/p/10808507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值