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

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