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,一经查实,立即删除!

相关文章

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

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

Unity将来时:IL2CPP是什么?

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

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

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

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

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

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

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

Unity 内存管理

一&#xff1a;资源类型 GameObject, Transform, Mesh, Texture, Material, Shader, noxss和各种其他Assets。 二&#xff1a;AssetBundle文件内存镜像 来自文件就用CreateFromFile(注意这种方法只能用于standalone程序&#xff09;这是最快的加载方法。也可以来自Memory,用…

1.逐帧动画shader

最近项目压力不大&#xff0c;抽时间看了些关于shader和游戏引擎的书籍&#xff0c;准备开始shader的学习。 在网上看到这位前辈&#xff08;http://blog.sina.com.cn/s/articlelist_2312702844_6_1.html&#xff09;写的博客&#xff0c;觉得很不错&#xff0c;学习曲线应该很…

panel中html怎么写,panel控件有什么用 请写出Panel控件的用途

当多个panel控件重叠时,把一个panel的visible/设置为true,其它的设置为f例如有3个panel&#xff0c;分别为panel1,panel2,panel3 如果重叠的话&#xff0c;把他们的大小设置为相同大小&#xff0c;直接通过上下层来控制即可&#xff0c;例如想要panel2显示出来&#xff0c;就用…

2.转动的地球shader

原理很简单&#xff0c;根据时间对uv中的x轴进行位移&#xff0c;对于地面和云层&#xff0c;取不同的移动速度&#xff0c;分别计算对应的uv坐标&#xff0c;再根据uv坐标从地面和云层的纹理中分别取出对应的值&#xff0c;最后把两者用lerp函数进行混合作为最终结果。 下边的…

3.顶点外扩方法实现的描边shader

描边shader的实现有很多种&#xff0c;顶点外扩是其中之一。顶点外扩的原理是用2个Pass 渲染物体2次第一遍:描边&#xff0c;顶点沿法线方向外拓后用黑色渲染。外扩这一步的实现是在投影空间&#xff0c;也就是2D的&#xff0c;根绝法线的x和y值进行外扩&#xff0c;因为是沿着…

为此计算机所有用户安装加载项,安装Office 2013后,无法在计算机上安装Outlook加载项...

我使用Outlook Add in模板和VSTO在visual studio 2010中实现了Outlook添加&#xff0c;我使用MSI安装程序(在visual studio 2010中创建)为它创建了一个安装..我能够在所有机器上安装它(x86和x64) ) .最近我尝试在安装了Office 2013的计算机上安装相同的安装程序并收到以下错误&…

4.边缘光照的描边shader

【思路】&#xff1a;面向摄像机的物体&#xff0c;它的表面法线【normal】和视角向量【viewDir】的【夹角】越靠近边缘就越大。那么就可以根据这个夹角进行处理&#xff0c;夹角越大&#xff0c;那么发射光越强&#xff0c;就可以实现我们想要的效果。 Shader "Study/4_O…

html 怎么设置cooki,怎么设置浏览器接受cookie

怎么设置浏览器接受cookie把浏览器设置成接受cookie方法&#xff0c;以IE11为例&#xff1a; 1&#xff0c;打开IE浏览器&#xff0c;在菜单栏上点击“工具”&#xff0c;弹出下拉菜单点击“Internet选项”。 2&#xff0c;点击“隐私”选项&#xff0c;在页面中点击“高级”。…

5.Lambert光照Diffuse Shader

http://blog.csdn.net/candycat1992/article/details/17355629 这篇文章写的很好&#xff0c;这里就直接上代码了 Shader "Study/5_LambertDiffuse" {Properties{_Color("Main Color", Color) (1,1,1,1)_MainTex("Base (RGB)", 2D) "whit…

计算机用户的注册表,计算机上的注册表在哪里

注册表在哪里: 计算机中的注册表在哪里&#xff1f;疯狂代码&#xff1f;: http://CrazyCoder.cn/DeveloperUtil/Article31113.html“开始”→“运行”菜单项&#xff0c;在运行中输入regedit&#xff0c;然后按Enter打开注册表编辑器&#xff0c;逐一展开上述各项以获取注册表…

6.Half Lambert光照Diffuse Shader

简单来说&#xff0c;Lambert定律认为&#xff0c;在平面某点漫反射光的光强与该反射点的法向量和入射光角度的余弦值成正比&#xff08;即我们之前使用dot函数得到的结果&#xff09;。Half Lambert最初是由Valve&#xff08;游戏半条命2使用的引擎即是其开发的&#xff09;提…

7.Phong 和 BlinnPhong

Lambert漫反射光照模型&#xff0c;这是一个用来模拟粗糙表面对光线的漫反射现象的经验模型&#xff0c;对于纸张、粗糙墙壁等等来说&#xff0c;这个模型或许够用&#xff0c;但对于金属这样的光滑表面来说&#xff0c;我们就需要使用Phong模型来模拟光滑表面对光线的镜面反射…

html css animation,css animation是什么?

animation是CSS3中的一个简写属性&#xff0c;可以通过设置六个动画属性来实现动画效果。这六个属性分别为动画名称、动画时间、速度曲线、动画延迟、播放次数及动画是否反向播放。语法&#xff1a;animation: name duration timing-function delay iteration-count direction;…

8.平面阴影

public class CastShadow : MonoBehaviour {public Transform rec;//接受阴影的物体// Use this for initializationvoid Start () {GetComponent<Renderer>().sharedMaterial.SetMatrix("_World2Ground", rec.GetComponent<Renderer>().worldToLocalMat…

9.球体阴影

上一篇讲的阴影shader是通过两个pass来渲染出的&#xff0c;第一个pass渲染要投影的物体本体&#xff0c;第二个pass渲染物体的阴影&#xff0c;也就是说阴影的渲染是在物体的shader中而不是地面的shader。下面要讲的球体阴影的shader是放在要接受阴影的地面上。 原理如下图&am…