日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

bash 实用技巧

發布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

總結

以上是生活随笔為你收集整理的bash 实用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。