使用bash/cut/split提取字符串的一部分

编程之家收集整理的这篇文章主要介绍了使用bash/cut/split提取字符串的一部分编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我有一个这样的字符串: /var/cpanel/users/joebloggs:DNS9=domain.com 我需要从这个字符串中提取用户名:joebloggs,并将其存储在一个变量中 字符串的格式将始终是相同的,除了joebloggs和domain.com所以我认为字符串可以拆分两次使用“剪切”? 第一次拆分将使用:将我们分开的字符串,我们将存储第一部分在一个varibale传递给第二个拆分功
我有一个这样的字符串:
/var/cpanel/users/joebloggs:DNS9=domain.com

我需要从这个字符串中提取用户名:joebloggs,并将其存储在一个变量中

字符串的格式将始终是相同的,除了joebloggs和domain.com所以我认为字符串可以拆分两次使用“剪切”?

第一次拆分将使用:将我们分开的字符串,我们将存储第一部分在一个varibale传递给第二个拆分功能

第二次拆分将使用/拆分字符串,并将最后一个字(joebloggs)存储到一个变量中

我知道如何做这个PHP使用数组和拆分,但在bash我有点失去了。

使用参数扩展在bash中从此字符串中提取joebloggs,而不需要任何额外的进程…
MYVAR="/var/cpanel/users/joebloggs:DNS9=domain.com" 

name=${MYVAR%:*}  # retain the part before the colon
name=${name##*/}  # retain the part after the last slash
echo $name

不依赖于joebloggs在路径中的特定深度。

如果你想使用grep:

echo MYVAR | grep -oE '/[^/]+:' | cut -c2- | rev | cut -c2- | rev

概要

几个参数扩展模式的概述,供参考

${MYVAR#pattern}       # delete shortest match of pattern from the beginning
${MYVAR##pattern}      # delete longest match of pattern from the beginning
${MYVAR%pattern}       # delete shortest match of pattern from the end
${MYVAR%%pattern}      # delete longest match of pattern from the end

所以#表示从开始匹配(想到注释行),%表示从结尾。一个实例意味着最短,两个实例意味着最长。

您还可以使用以下代替替换特定字符串或模式:

${MYVAR/search/replace}

该模式与文件名匹配格式相同,因此*(任何字符)是常见的,后面紧跟着/或的特殊符号。

例子:

给定一个变量like

MYVAR="users/joebloggs/domain.com"

删除留下文件名的路径(所有字符最多为斜杠):

echo ${MYVAR##*/}
domain.com

删除文件名,留下路径(删除最后匹配的最后一个/):

echo ${MYVAR%/*}
users/joebloggs

获取文件扩展名(在上一期之前删除所有文件):

echo ${MYVAR##*.}
com

注意:要执行两个操作,您不能组合它们,但必须分配到一个中间变量。所以得到没有路径或扩展名的文件名:

name=${MYVAR##*/}      # remove part before last slash
echo ${name%.*}        # from the new var remove the part after the last period
domain

总结

以上是编程之家为你收集整理的使用bash/cut/split提取字符串的一部分全部内容,希望文章能够帮你解决使用bash/cut/split提取字符串的一部分所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

Bash文章

1. 引言 由于实习生转正,公司给配了一台新电脑,配置不用多说,16G内存,i7 7700的CPU,128SSD的系统盘,1T的机械硬盘,虽然只有一个破核显。对于我个人而言,最重要的是系统从Windo
 =   赋值操作符,可以用于算术和字符串赋值 +        加法计算     -        减法运算 *        乘法运算 /         除法运算 **      幂运算    %    模运算       取他除后的剩余数   因此这个十分好求公约数 +=   "加-等于" (把变量的值增加一个常量然后再把结果赋给变量)    -=      "减-等于" (把变量的值减去
1、安装说明   操作系统版本:CentOS Linux release 7.5.1804 (Core)   saltstack版本:2018.3.2   已经关闭selinux、firewalld服务。 2、配置yum源 编辑/etc/yum.repos.d/salt.repo,内容如下: [salt-latest] name=SaltStack Latest Release Channel f
$()   用于命令交换      里面会会执行命令,如果你写其他的:      会直接报错的 ` `  也是用于命令交换的哦        和$() 的操作是一样的 ${ }   用于变量替换   每次调用环境的时候是需要带一个${ } 但是不带也不会影响        这个定义了变量的范围,比较不容易出错 $[ ]    用于算术计算   里面出现的只有数字      但是你在里面输出其他非数
主题介绍 为纸小墨写的一款主题,该主题移植自Yumoe Demo ink-theme-story 主题的一些食用说明 菜单 标题旁边有一个 · 字符,点击后便可显示菜单。1,2,3 分别代表 独立页面菜单、导航树(仅在文章界面有用)以及搜索框。 具体介绍可见https://yumoe.com/archives/story.html 一些功能 评论点击加载, 可以应对一些墙导致无法加载的场景 图片懒
^ 行首 $ 行尾 . 除了换行符以外的任意单个字符 * 前导字符的零个或多个 .* 所有字符 [] 字符组内的任一字符 [^] 对字符组内的每个字符取反(不匹配字符组内的每个字符) ^[^] 非字符组内的字符开头的行 [a-z] 小写字母 [A-Z] 大写字母 [a-Z] 小写和大写字母 [0-9] 数字 \< 单词头 单词一般以空格或特殊字符做分隔,连续的字符串被当做单词 \> 单词尾 扩展正
使用shell 判断文件夹或文件是否存在 判断文件夹是否存在 if [! -d "/etc/open" ];then echo "文件夹/etc/open不存在" esle echo "文件夹/etc/open存在" fi 判断文件是否存在,若存在则删除 if [ ! -f "/etc/filename" ];then echo "文件不存在" else rm -rf /etc/lename ec
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注