mirror of
https://github.com/LCTT/TranslateProject.git
synced 2025-01-25 23:11:02 +08:00
PRF&PUB:20171206 How to extract substring in Bash.md
@lujun9972 https://linux.cn/article-9127-1.html
This commit is contained in:
parent
019bdcc2f4
commit
6ca219c402
@ -1,6 +1,7 @@
|
|||||||
如何在 Bash 中抽取子字符串
|
如何在 Bash 中抽取子字符串
|
||||||
======
|
======
|
||||||
子字符串不是别的,就是出现在其他字符串内的字符串。 比如 “3382” 就是 “this is a 3382 test” 的子字符串。 我们有多种方法可以从中把数字或指定部分字符串抽取出来。
|
|
||||||
|
所谓“子字符串”就是出现在其它字符串内的字符串。 比如 “3382” 就是 “this is a 3382 test” 的子字符串。 我们有多种方法可以从中把数字或指定部分字符串抽取出来。
|
||||||
|
|
||||||
[![How to Extract substring in Bash Shell on Linux or Unix](https://www.cyberciti.biz/media/new/faq/2017/12/How-to-Extract-substring-in-Bash-Shell-on-Linux-or-Unix.jpg)][2]
|
[![How to Extract substring in Bash Shell on Linux or Unix](https://www.cyberciti.biz/media/new/faq/2017/12/How-to-Extract-substring-in-Bash-Shell-on-Linux-or-Unix.jpg)][2]
|
||||||
|
|
||||||
@ -8,15 +9,17 @@
|
|||||||
|
|
||||||
### 在 Bash 中抽取子字符串
|
### 在 Bash 中抽取子字符串
|
||||||
|
|
||||||
其语法为:
|
其语法为:
|
||||||
```shell
|
|
||||||
## syntax ##
|
|
||||||
${parameter:offset:length}
|
|
||||||
```
|
|
||||||
子字符串扩展是 bash 的一项功能。它会扩展成 parameter 值中以 offset 为开始,长为 length 个字符的字符串。 假设, $u 定义如下:
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
## define var named u ##
|
## 格式 ##
|
||||||
|
${parameter:offset:length}
|
||||||
|
```
|
||||||
|
|
||||||
|
子字符串扩展是 bash 的一项功能。它会扩展成 `parameter` 值中以 `offset` 为开始,长为 `length` 个字符的字符串。 假设, `$u` 定义如下:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
## 定义变量 u ##
|
||||||
u="this is a test"
|
u="this is a test"
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -34,6 +37,7 @@ test
|
|||||||
```
|
```
|
||||||
|
|
||||||
其中这些参数分别表示:
|
其中这些参数分别表示:
|
||||||
|
|
||||||
+ 10 : 偏移位置
|
+ 10 : 偏移位置
|
||||||
+ 4 : 长度
|
+ 4 : 长度
|
||||||
|
|
||||||
@ -41,9 +45,9 @@ test
|
|||||||
|
|
||||||
根据 bash 的 man 页说明:
|
根据 bash 的 man 页说明:
|
||||||
|
|
||||||
> The Internal Field Separator that is used for word splitting after expansion and to split lines into words with the read builtin command。The default value is<space><tab><newline>。
|
> [IFS (内部字段分隔符)][3]用于在扩展后进行单词分割,并用内建的 read 命令将行分割为词。默认值是<space><tab><newline>。
|
||||||
|
|
||||||
另一种 POSIX 就绪(POSIX ready) 的方案如下:
|
另一种 <ruby>POSIX 就绪<rt>POSIX ready</rt></ruby>的方案如下:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
u="this is a test"
|
u="this is a test"
|
||||||
@ -54,7 +58,7 @@ echo "$3"
|
|||||||
echo "$4"
|
echo "$4"
|
||||||
```
|
```
|
||||||
|
|
||||||
输出为:
|
输出为:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
this
|
this
|
||||||
@ -63,7 +67,7 @@ a
|
|||||||
test
|
test
|
||||||
```
|
```
|
||||||
|
|
||||||
下面是一段 bash 代码,用来从 Cloudflare cache 中去除带主页的 url
|
下面是一段 bash 代码,用来从 Cloudflare cache 中去除带主页的 url。
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
@ -113,14 +117,15 @@ done
|
|||||||
echo
|
echo
|
||||||
```
|
```
|
||||||
|
|
||||||
它的使用方法为:
|
它的使用方法为:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
~/bin/cf.clear.cache https://www.cyberciti.biz/faq/bash-for-loop/ https://www.cyberciti.biz/tips/linux-security.html
|
~/bin/cf.clear.cache https://www.cyberciti.biz/faq/bash-for-loop/ https://www.cyberciti.biz/tips/linux-security.html
|
||||||
```
|
```
|
||||||
|
|
||||||
### 借助 cut 命令
|
### 借助 cut 命令
|
||||||
|
|
||||||
可以使用 cut 命令来将文件中每一行或者变量中的一部分删掉。它的语法为:
|
可以使用 `cut` 命令来将文件中每一行或者变量中的一部分删掉。它的语法为:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
u="this is a test"
|
u="this is a test"
|
||||||
@ -135,13 +140,14 @@ var="$(cut -d' ' -f 4 <<< $u)"
|
|||||||
echo "${var}"
|
echo "${var}"
|
||||||
```
|
```
|
||||||
|
|
||||||
想了解更多请阅读 bash 的 man 页:
|
想了解更多请阅读 bash 的 man 页:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
man bash
|
man bash
|
||||||
man cut
|
man cut
|
||||||
```
|
```
|
||||||
|
|
||||||
另请参见: [Bash String Comparison: Find Out IF a Variable Contains a Substring][1]
|
另请参见: [Bash String Comparison: Find Out IF a Variable Contains a Substring][1]
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -149,10 +155,11 @@ via: https://www.cyberciti.biz/faq/how-to-extract-substring-in-bash/
|
|||||||
|
|
||||||
作者:[Vivek Gite][a]
|
作者:[Vivek Gite][a]
|
||||||
译者:[lujun9972](https://github.com/lujun9972)
|
译者:[lujun9972](https://github.com/lujun9972)
|
||||||
校对:[校对者ID](https://github.com/校对者ID)
|
校对:[wxy](https://github.com/wxy)
|
||||||
|
|
||||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||||
|
|
||||||
[a]:https://www.cyberciti.biz
|
[a]:https://www.cyberciti.biz
|
||||||
[1]:https://www.cyberciti.biz/faq/bash-find-out-if-variable-contains-substring/
|
[1]:https://www.cyberciti.biz/faq/bash-find-out-if-variable-contains-substring/
|
||||||
[2]:https://www.cyberciti.biz/media/new/faq/2017/12/How-to-Extract-substring-in-Bash-Shell-on-Linux-or-Unix.jpg
|
[2]:https://www.cyberciti.biz/media/new/faq/2017/12/How-to-Extract-substring-in-Bash-Shell-on-Linux-or-Unix.jpg
|
||||||
|
[3]:https://bash.cyberciti.biz/guide/$IFS
|
Loading…
Reference in New Issue
Block a user