所谓“子字符串”就是出现在其它字符串内的字符串。 比如 “3382” 就是 “this is a 3382 test” 的子字符串。 我们有多种方法可以从中把数字或指定部分字符串抽取出来。

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

在 Bash 中抽取子字符串

其语法为:

## 格式 ## ${parameter:offset:length}

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

## 定义变量 u ## u="this is a test"

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

var="${u:10:4}" echo "${var}"

结果为:

test

其中这些参数分别表示:

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"

输出为:

this is a test

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

#!/bin/bash

####################################################

## Author - Vivek Gite

## 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

它的使用方法为:

~/bin/cf.clear.cache https://www.cyberciti.biz/faq/bash-for-loop/ https://www.cyberciti.biz/tips/linux-security.html

借助 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 <<< $u)" echo "${var}"

想了解更多请阅读 bash 的 man 页:

man bash man cut

linux下字符串操作,Linux Bash 中字符串操作相关推荐

  1. linux bash 字符串 连接,Linux Bash 中字符串操作

    Linux Bash 中字符串操作 所谓 "子字符串" 就是出现在其它字符串内的字符串. 比如 "3382" 就是 "this is a 3382 t ...

  2. Linux下sed命令替换配置文件中某个变量的值(改变包含字符的一行的值)之二——只改变第一出现的那一行

    一.背景 在之前的文章中有介绍过<Linux下sed命令替换配置文件中某个变量的值(改变包含字符的一行的值)> 但是这种方法存在一定的问题,就是假如某个变量在一个文件中出现两次,却只想更改 ...

  3. (原创)Linux下一定要4字节地址对齐操作

    Linux下一定要4字节地址对齐操作:"血"的教训,一定不要忘记!!! 当然不仅仅是Linux下,所有的32位机都应该如此!!!

  4. BASH中字符串的处理

    BASH中字符串的处理 得到长度: 源码: %x="abcd" #方法一 %expr length $x 4 # 方法二 %echo ${#x} 4 # 方法三 %expr &qu ...

  5. Linux下netstat常用,Linux netstat常用命令

    1.统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2.统计httpd协议连接数(查看Apache的并发请求数及其TCP连接状态) ps -ef ...

  6. linux nginx安装php5.5,linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装

    linux下搭建LNMP(linux+nginx+mysql+php)环境之mysql5.5安装: 首先安装依赖包: yum -y install gcc gcc-c++ autoconf libjp ...

  7. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装

    安装准备:依赖包下载wget http://ah1.down.chinaz.com/201303/PHP-v5.4.13.tar.gz wget http://soft.7dot.com/soft/l ...

  8. java字符串数组转json_java中字符串String格式转化成json格式

    java字符串数组转json_java中字符串String格式转化成json格式 String s= Connection.deleteHost("10310");System.o ...

  9. linux find批量替换java文件中字符串

    linux批量替换java文件中字符串find ./ -name '*.java' | xargs perl -pi -e 's|MoonlightL|ZXL|g' find ./ -name '*. ...

最新文章

  1. 网络地址转换(PAT)
  2. ISA Server中基于L2TP实现远程拨入***
  3. 宝安区2021年高考成绩查询入口,宝安区2021年初一学位网上预申请系统http:bajjk.sz.edu.cn/visitbagbcyjz...
  4. POJ2301+水~~~~~~
  5. ant design vue input change_vue中关于$emit用法的笔记
  6. Maven常用的构建命令
  7. SetWindowPos详解
  8. ECMAScript 学习笔记02
  9. linux小米随身wifi,小米随身wifi for mac版详细使用图文步骤
  10. GB28181协议之设备录像查询
  11. 错误 LNK2005 xxx已经在 xxx.obj 中定义
  12. 核心期刊为什么难发?
  13. C++基础入门(第一篇)
  14. 安卓手机快速将IOS微信消息换行
  15. springboot RedisTemplate 提示没有双引号序列化失败问题
  16. darknet训练时Couldn‘t open file的问题解决
  17. Android实现应用数字角标
  18. 基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局
  19. Ubuntu18.04安装Google浏览器
  20. docker-compose 部署 php + nginx + mysql + redis

热门文章

  1. 如何通过query获得一个product的所有附件
  2. How is default text type determined for Account view
  3. 使用Repository informaton system查找constant定义
  4. SAP Hybris Enterprise Commerce Platform ECP和SAP CRM架构比较
  5. 自己开发的在线视频下载工具,基于Java多线程
  6. 企业数字化转型与SAP云平台
  7. 模拟电梯控制软件设计c语言,模拟电梯控制系统设计.docx
  8. matlab 随机数权重,MATLAB中加权随机数
  9. 广州交通大学二年级算法实验题目(第一弹)
  10. java的应用程序开发_开发一个Java应用程序(1)