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執(zhí)行命令:
(umask 000;mkdir hello;mkdir word)
創(chuàng)建了兩個目錄,權限都為777
?
五.set
set -x 以debug模式執(zhí)行shell,顯示執(zhí)行過程
set -e 如果某一條shell出錯就不再往后繼續(xù)執(zhí)行
?
正則表達式:
[[space:]] ? ? ? ? ?#空白字符
[[:digit:]] ? ? ? ? ? ?#數(shù)字
[[:alnum;]] ? ? ? ? #數(shù)字和字母
[[:punct:]] ? ? ? ? ?#標點符號
[[:lower:]] ? ? ? ? ?#小寫字母
[[:upper:]] ? ? ? ? #大寫字母
[[:alpha:]] ? ? ? ? #大小寫字母
. ? ? ? ? ? ? ? ? ? ? ?#匹配單個字符
* ? ? ? ? ? ? ? ? ? ? #匹配前面字符任意次
.* ? ? ? ? ? ? ? ? ? ? #匹配任意長度字符,也包含空行
\? ? ? ? ? ? ? ? ? ? #匹配前面字符一次或零次
\{m,n\} ? ? ? ? ? #匹配前面字符至少M次,最多n次
\(ab\) ? ? ? ? ? ? #分組匹配,主要用于搭配后項引用,前面匹配到什么,后面就引用什么(eg:grep "\(l..e\).*\1$" test ? ?#匹配以括號中匹配到的內容結尾的行)
位置鎖定:
^ ? ? ? ? ? ?#行首(如果出現(xiàn)在'[ ]'中,則表示排除,eg grep '[^1-2]' test,表示排除除了1和2的行)
? ? ? ?$ ? ? ? ? ? ?#行尾
? ? ? ^$ ? ? ? ? ? #空行
? ? ? \< ? ? ? ? ? #詞首
? ? ? \> ? ? ? ? ? #詞尾
?
grep參數(shù):
-i ? ? ? ? ?#忽略大小寫
-n ? ? ? ?#顯示行號
-c ? ? ? ?#統(tǒng)計符合條件的行
-v ? ? ? ?#排除符合條件的行
-An ? ? #打印符合條件行及下面的n行
-Bn ? ? #打印符合條件行及上面的n行
-Cn ? ? #打印符合條件的行及上下n行
egrep:
+ ? ? ? ? ? #匹配前面字符至少一次
? ? ? ? ? ? #匹配前面字符一次或零次
{m,n} ?#匹配前面字符至少m次,最多n次
(a|b) #匹配a或b
?
sed:
參數(shù):
-n 靜默模式,不再顯示模式空間的內容
-i ?直接應用在文件中生效,如果不加-i,只是輸出到屏幕而不應用到文件
-r 使用擴展正則表達式
-f 保存至文件執(zhí)行
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
總結
- 上一篇: web项目中关于引入JS/css文件,
- 下一篇: C++---拷贝构造函数和赋值构造函数