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

Linux Bash 中字符串操作

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

ab7653affab982b574eb7acc55df2e04.gif

本文会向你展示在 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(){localu="$1"IFS='/'set--$u echo"${1}${IFS}${IFS}${3}${IFS}${4}${IFS}"}

echo echo"Purging cache from Cloudflare..."echoforuin$urlsdohome_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}\"]}"echodoneecho

它的使用方法为:

~/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''-f4echo"$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

来源: http://www.mzh.ren/how-to-extract-substring-in-bash.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中typeof 与GetType()的区别和methodinfo、memberinfo反射

C#中任何对象都具有GetType()方法&#xff0c;它的作用和typeof()相同&#xff0c;返回Type类型的当前对象的类型。typeof(x)中的x&#xff0c;必须是具体的类名、类型名称等&#xff0c;不可以是变量名称&#xff1b;GetType()是基类System.Object的方法&#xff0c;因此只有建…

maven下载源码linux,Maven 下载 源码和javadoc 命令

摘要&#xff1a;我们在写代码时候&#xff0c;往往是想查看一下源码&#xff0c;看看源码的一些细节内容。一般情况下&#xff0c;在IDE(如eclipse)中近仅仅只需按住ctrl 点击对应的方法即可进入对应的源码部分。但是有些时候很多依赖项并不会默认下载对应的源码&#xff0c;因…

监听Hierachy、Project等视图结构变化的事件

之前上网看了MOMO关于监听Hierachy、Project等视图结构变化的事件&#xff0c;原代码是一个日本人写的&#xff0c;MOMO也没有讲原理。这里我通过自己的理解加了些注释&#xff0c;可能有不正确的地方&#xff0c;希望大神指点。 其中用到了[InitializeOnLoad]&#xff0c;可以…

linux交叉编译tile环境搭建,g ++ - 在Ubuntu中在32位上交叉编译64位程序时,缺少包含“bits / c ++ config.h”...

在我的64位系统上&#xff0c;我注意到存在以下目录&#xff1a;/usr/include/c/4.4/x86_64-linux-gnu/32/bits那么我的32位系统已经设置为64位交叉编译就应该有一个相应的目录&#xff0c;如&#xff1a;/usr/include/c/4.4/i686-linux-gnu/64/bits我仔细检查了这个目录不存在…

Unity3D研究院之获取摄像机的视口区域

在网上看了momo的文章&#xff0c;在这把代码加入些注释&#xff0c;也便于自己理解记忆。原理很简单&#xff0c;就是根据摄像机的参数计算距离摄像机某一距离的摄像机窗口四个position。 using UnityEngine; using System.Collections;public class CameraView : MonoBehavio…

linux 的文件软链接隐藏,Linux inode及硬链接软链接详解

Linux inode及硬链接软链接详解York • 2020 年 09 月 28 日Loading...操作系统的文件数据除了实际内容之外&#xff0c;通常含有非常多的属性&#xff0c;例如 Linux操作系统的文件权限与文件属性。文件系统通常会将这两部分内容分别存放在 inode和 block中。---# inode 和 bl…

Unity中date相关问题

今天遇到了从服务器获取unix时间戳&#xff0c;将其转换为时间并显示的需求。Unity中可以使用C#中有关的date函数来处理这个问题。 首先UNIX时间戳的定义如下&#xff1a; Unix时间戳&#xff08;英文为Unix epoch, Unix time, POSIX time 或 Unix timestamp&#xff09; 是…

linux集群管理权限,Linux下ACL权限管理

1.开启ACL功能(1)永久开启①#tune2fs -o acl /dev/sdb2②#cd /etc/fstab#vim fstab写入&#xff1a;/dev/sdb2 /mnt/sdb ext3 defaults,acl 0 0(2)临时开启已挂起的分区:#mount -o remount acl /dev/sdb2未挂载的分区#mount -o /dev/sdb2 /mnt/sdb2.查看是否开启ACL#tune2fs -l…

查找unity工程代码中中文字符

游戏本地化的时候可能需要搜索工程代码中的中文字符。 这个可以通过加载文件一行一行读取后&#xff0c;通过正则来查询。 下面的代码LoadFile函数通过流加载文件&#xff0c;FindFile通过递归病使用DirectoryInfo类和FileInfo类读取子目录和文件&#xff0c;并通过正则匹配出…

linux so_nosigpipe,TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL设置

下面是TCP_NODELAY/SO_LINGER/SO_NOSIGPIPE/MSG_NOSIGNAL的设置方法&#xff1a;其中由于平台的不同&#xff0c;区分SO_NOSIGPIPE和MSG_NOSIGNAL有所分区&#xff1a;int optval 1;// turn off SIGPIPE signal#ifdef __linux__setsockopt(m_Sockfd, SOL_SOCKET, MSG_NOSIGNAL…

Unity将来时:IL2CPP是什么?

Unity3D 想必大家都不陌生&#xff0c;独立游戏制作者们很多人都在用它&#xff0c;甚至一些大公司也用在很商业的游戏制作上。Unity3D最大的一个特点是一次制作&#xff0c;多平台部署&#xff0c;而 这一核心功能是靠Mono实现的。可以说Mono是Unity3D核心的核心&#xff0c;是…

计算信源熵和香农编码C语言,信息论与编码课程设计报告-统计信源熵与香农编码.pdf...

信息论与编码课程设计报告设计题目&#xff1a; 统计信源熵与香农编码专业班级 电 信 12-06学 号学生姓名指导教师教师评分2015 年 3 月 30 日目 录- 0 -一、设计任务与要求1.统计信源熵要求&#xff1a;统计任意文本文件中各字符(不区分大小写)数量&#xff0c;计算字符概率&a…

手游频繁崩溃”闪退”? 从程序上找原因

手游频繁崩溃”闪退”&#xff1f; 从程序上找原因 作为玩家&#xff0c;当游戏crash的时候是什么心情&#xff0c;如果这个游戏玩起来还不错的话&#xff0c;那我可能还会打开第二次&#xff0c;如果这个游戏一般的话我可能直接怒删了。当多次出现闪退crash的时候&#xff0c;…

汇编语言属于C语言吧,汇编语言和c语言的区别是什么

区别&#xff1a;汇编语言的效率高&#xff0c;对硬件的可操控性更强&#xff0c;体积小&#xff0c;不易维护&#xff0c;可移植性很差&#xff1b;c语言的效率比较低&#xff0c;硬件可操控性比较差&#xff0c;目标代码体积大&#xff0c;容易维护&#xff0c;可移植性很好。…

c语言某一行不被优化,C语言优化小技巧

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼在编写C语言程序后&#xff0c;经常需要对源码进行优化&#xff0c;以提高程序的运行效率&#xff0c;下面简述几个常用的优化技巧以供大家参考&#xff1a;1.C于代码在程序中的优化现在的C编译器会自动对代码进行优化&#xff0c;…

一款已上市MMO手游地图同步方案总结

1. 客户端地图格子的相关知识在2.5D的MMO游戏里&#xff0c;角色是通过3D的方式渲染&#xff0c;2D的地图是通过2D的方式显示&#xff0c;所以在客户端一般会有三个坐标系&#xff1a; a) 3D坐标系&#xff1a;所有需要3D渲染的角色和光效&#xff0c;都以3D坐标系中定位。 b) …

策略模式与简单工厂模式区别(转)

最近一直在抽时间研究设计模式&#xff0c;之前对设计模式也有一定的了解&#xff0c;但是都没有平心静气的去研究过&#xff0c;只是了解了一些皮毛&#xff0c;最近打算再深入研究一下&#xff0c;重新打开了设计模式的数据&#xff0c;对之前的疑问一个个的刨根问底&#xf…

c语言中枚举类型的长度,C中的枚举类型数据的大小是多少?

这是一个C面试测试问题不是家庭作业。#include using namespace std;enum months_t { january, february, march, april, may, june, july, august, september,october, november, december} y2k;int main (){cout << "sizeof months_t is " << sizeof(m…

求平方根sqrt()函数的底层算法效率问题

我们平时经常会有一些数据运算的操作&#xff0c;需要调用sqrt&#xff0c;exp&#xff0c;abs等函数&#xff0c;那么时候你有没有想过&#xff1a;这个些函数系统是如何实现的&#xff1f;就拿最常用的sqrt函数来说吧&#xff0c;系统怎么来实现这个经常调用的函数呢&#xf…

android espresso跨程序,Android Espresso:依次运行多个测试

我正在尝试使用Espresso forAndroid进行一系列测试.运行之间似乎没有关闭活动.一次测试后,无论应用程序状态如何,左侧为下一次测试.如何用Espresso来实现&#xff1f;错误报告中提供的修复程序的问题是,这将仅在整个套件的完成时执行.如果你想在每次测试后都有一个干净的活动堆…