当前位置: 首页 > 科技观察

Bash中如何提取子串

时间:2023-03-16 20:38:02 科技观察

所谓“子串”,就是出现在其他字符串中的字符串。例如,“3382”是“thisisa3382test”的子串。我们有多种方法来提取数字或字符串的指定部分。如何在Linux或Unix上的BashShell中提取子字符串本文将向您展示如何在bashshell中获取或找出子字符串。在Bash中提取子串的语法是:##format##${parameter:offset:length}子串扩展是bash的一个特性。它扩展为从参数值中的偏移量开始的长度为字符的字符串。假设,$u定义如下:##定义变量u##u="thisisatest"那么下面参数的子串展开会提取子串:var="${u:10:4}"echo"${var}"的结果是:test其中这些参数分别代表:10:偏移位置4:长度使用IFS根据bash的manpage描述:IFS(internalfieldseparator)扩展后用于分词,并使用内置的读取命令将行拆分为单词。默认值为。另一种POSIXreadyPOSIXready解决方案如下:u="thisisatest"set--$uecho"$1"echo"$2"echo"$3"echo"$4"输出为:thisisatest下面是一段bash代码,用于从Cloudflare缓存中删除带有主页的url。#!/bin/bash######################################################作者-VivekGite{https://www.cyberciti.biz/}##目的-清除CF缓存##许可证-根据GPLver3.x+######################################################让我先##zone_id="YOUR_ZONE_ID_HERE"api_key="YOUR_API_KEY_HERE"email_id="YOUR_EMAIL_ID_HERE"##保存数据##home_url=""amp_url=""urls="$@"##显示用法["$urls"==""]&&{echo"用法:$0url1url2url3";出口1;}##获取主页url,因为我们在域上有各种子目录##/tips/##/faq/get_home_url(){localu="$1"IFS='/'set--$uecho"${1}${IFS}${IFS}${3}${IFS}${4}${IFS}"}echoecho"正在从Cloudflare中清除缓存。.。“在$urls中为你回显dohome_url="$(get_home_url$u)"amp_url="${u}amp/"curl-XDELETE"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}\"]}"echodoneecho它的用法是:~/bin/cf.clear.cachehttps://www.cyberciti.biz/faq/bash-for-loop/https://www.cyberciti.biz/tips/linux-security.html在cut命令的帮助下,你可以使用cut命令保存每一行或变量的Part被删除。它的语法是:u="thisisatest"echo"$u"|剪切-d''-f4回声“$u”|剪切--delimiter=''--fields=4#############################################WHERE##-d'':使用空格作为分隔符##-f4:仅选择第4个字段############################################var="$(cut-d''-f4<<<$u)"echo"${var}"有关更多信息,请阅读bash手册页:manbashmancut另请参阅:Bash字符串比较:找出变量是否包含子字符串