Heim > System-Tutorial > LINUX > Hauptteil

Teilstring unter Bash extrahieren

王林
Freigeben: 2024-03-04 09:02:05
nach vorne
449 Leute haben es durchsucht

Teilstring unter Bash extrahieren
本文会向你展示在 bash shell 中如何获取或者说查找出子字符串。

在 Bash 中抽取子字符串

其语法为:

## 格式 ##
${parameter:offset:length}
Nach dem Login kopieren

子字符串扩展是 bash 的一项功能。它会扩展成 parameter 值中以 offset 为开始,长为 length 个字符的字符串。 假设, $u 定义如下:

## 定义变量 u ##
u="this is a test"
Nach dem Login kopieren

那么下面参数的子字符串扩展会抽取出子字符串:

var="${u:10:4}"
echo "${var}"
Nach dem Login kopieren

结果为:

test
Nach dem Login kopieren

其中这些参数分别表示:

10 : 偏移位置
4 : 长度

使用 IFS

根据 bash 的 man 页说明:

IFS (内部字段分隔符)用于在扩展后进行单词分割,并用内建的 read 命令将行分割为词。默认值是。

另一种 POSIX 就绪POSIX ready的方案如下:

u="this is a test"
set -- $u
echo "$1"
echo "$2"
echo "$3"
echo "$4"
Nach dem Login kopieren

输出为:

this
is
a
test
Nach dem Login kopieren

下面是一段 bash 代码,用来从 Cloudflare cache 中去除带主页的 url。

#!/bin/bash
####################################################
## Author - Vivek Gite {https://www.cyberciti.biz/}
## Purpose - Purge CF cache
## License - Under GPL ver 3.x+
####################################################
## set me first ##
zone_id="YOUR_ZONE_ID_HERE"
api_key="YOUR_API_KEY_HERE"
email_id="YOUR_EMAIL_ID_HERE"
## hold data ##
home_url=""
amp_url=""
urls="$@"
## Show usage
[ "$urls" == "" ] && { echo "Usage: $0 url1 url2 url3"; exit 1; }
## Get home page url as we have various sub dirs on domain
## /tips/
## /faq/
get_home_url(){
local u="$1"
IFS='/'
set -- $u
echo "${1}${IFS}${IFS}${3}${IFS}${4}${IFS}"
}
echo
echo "Purging cache from Cloudflare。.。"
echo
for u in $urls
do
home_url="$(get_home_url $u)"
amp_url="${u}amp/"
curl -X DELETE "https://api.cloudflare.com/client/v4/zones/${zone_id}/purge_cache" \
-H "X-Auth-Email: ${email_id}" \
-H "X-Auth-Key: ${api_key}" \
-H "Content-Type: application/json" \
--data "{\"files\":[\"${u}\",\"${amp_url}\",\"${home_url}\"]}"
echo
done
echo
Nach dem Login kopieren

它的使用方法为:

~/bin/cf.clear.cache https://www.cyberciti.biz/faq/bash-for-loop/ 
https://www.cyberciti.biz/tips/linux-security.html
Nach dem Login kopieren
借助 cut 命令

可以使用 cut 命令来将文件中每一行或者变量中的一部分删掉。它的语法为:

u="this is a test"
echo "$u" | cut -d' ' -f 4
echo "$u" | cut --delimiter=' ' --fields=4
##########################################
## WHERE
## -d' ' : Use a whitespace as delimiter
## -f 4 : Select only 4th field
##########################################
var="$(cut -d' ' -f 4 
<p>想了解更多请阅读 bash 的 man 页:</p>
<pre class="brush:php;toolbar:false">man bash
man cut
Nach dem Login kopieren

另请参见: Bash String Comparison: Find Out IF a Variable Contains a Substring

Das obige ist der detaillierte Inhalt vonTeilstring unter Bash extrahieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:linuxprobe.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage