Linux Shell 用法(二)split和VAR命令

split命令可以用來分割文件

$ split -b 10k data.file
$ ls
data.file xaa xab xac xad xae xaf xag xah xai xaj

上面的命令將data.file分割成了10個大小爲10KB的文件。

如果想使用數字後綴,需要使用-d選項。此外, -a length 可以指定後綴長度:

$ split -b 10k data.file -d -a 4
$ ls
data.file x0009 x0019 x0029 x0039 x0049 x0059 x0069 x0079

VAR

${VAR%.*} 的含義如下。

KaTeX parse error: Unexpected character: '' at position 47: …。通配符從右向左進 行匹配。 ̲ 給VAR賦值,即VAR=sa…VAR中 刪除匹配結果,得到輸出sample。
%屬於非貪婪(non-greedy)操作。它從右向左找出匹配通配符的最短結果。還有另一個操作 符%%,它與%相似,但行爲模式卻是貪婪的,這意味着它會匹配符合通配符的最長結果。例如, 我們現在有這樣一個文件:

VAR=hack.fun.book.txt

使用%操作符從右向左執行非貪婪匹配,得到匹配結果.txt:

 $ echo ${VAR%.*}

命令輸出:hack.fun.book。

使用%%操作符從右向左執行貪婪匹配,得到匹配結果.fun.book.txt:

$ echo ${VAR%%.*}

命令輸出:hack。
#操作符可以從文件名中提取擴展名。這個操作符與%類似,不過求值方向是從左向右。 ${VAR#*.}的含義如下:

從$VARIABLE中刪除位於#右側的通配符(即在上例中使用的*.)從左向右所匹配到的字 符串。
和%%類似,#也有一個對應的貪婪操作符##。
##從左向右進行貪婪匹配,並從指定變量中刪除匹配結果。來看一個例子:

VAR=hack.fun.book.txt

使用#操作符從左向右執行非貪婪匹配,得到匹配結果hack:

$ echo ${VAR#*.}

命令輸出:fun.book.txt。
使用##操作符從左向右執行貪婪匹配,得到匹配結果hack.fun.book:

$ echo ${VAR##*.}

命令輸出:txt。

$ echo ${URL%.*}	# 移除.*所匹配的最右邊的內容

www.google

$ echo ${URL%%.*}	# 將從右邊開始一直匹配到最左邊的.*(貪婪操作符)移除

www

$ echo ${URL#*.} # 移除*.所匹配的最左邊的內容

google.com

$ echo ${URL##*.} # 將從左邊開始一直匹配到最右邊的*.(貪婪操作符)移除 com

com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章