首页 > 分享 > shell 字符串分割与连接

shell 字符串分割与连接

1。字符串连接

your_id=${USER}-on-${HOSTNAME} echo "$your_id" your_id=`printf "%s%s%s" "$USER" "-on-" "$HOSTNAME"` echo "$your_id"

2.shell实现创建前一天时间的目录:

1 aaa=`date +%Y%m%d --date='1 days ago'`; 2 bbb="mkdir "$aaa 3 $bbb 4 5 6 7 filename=$1 8 string1=exist 9 string2=xi 10 command="cat $filename | grep $string1 | grep $string2" 11 eval $command 12 13 14 [~/shell]# sh test.sh runshell.sh 15 echo "exist;"; 16 echo "notexist;";

3.linux shell substr(分割字符串)  

原来在shell中如果遇到要截取字符串的情况,就调用awk中的substr来实现。
今天了解到一种新的方法,原来shell中本身就支持这种用法。
如,有一字符串”12345678″,现在要截取第三个到第六个字符的字符串区间。
则可以:


1 [xok.la ~]$ export str="123456789" 2 [xok.la ~]$ echo ${str:3:(6-3)} 3 456 4 [xok.la ~]$ unset str

从以上第二个表达式可以看出这个用法,即:${str:3:(6-3)}
可以归纳为:${str:begin:len},且支持表达式,如:6-3。

补充一下从网上找到一些其他的用法:

shell字符串的截取的问题:
一、Linux shell 截取字符变量的前8位,有方法如下:

1.expr substr "$a" 1 8 2.echo $a|awk '{print substr(,1,8)}' 3.echo $a|cut -c1-8 4.echo $ 5.expr $a : '(.\).*' 6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要

例子:

$ MYVAR=foodforthought.jpg
$ echo ${MYVAR##*fo}
rthought.jpg
$ echo ${MYVAR#*fo}
odforthought.jpg

2、第二种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。

可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:

$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga

这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

三、按照指定要求分割:
比如获取后缀名

ls -al | cut -d "." -f2

4.既然提到了cut命令,就再找一篇文档吧

cut命令是用来剪下文本文件里的数据,文本文件可以是字段类型或是字符类型。下面给出应用实例: /> cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin ... ... /> cut -d : -f 1,5 /etc/passwd #-d后面的冒号表示字段之间的分隔符,-f表示取分割后的哪些字段 root:root #这里取出的是第一个和第五个字段。 bin:bin daemon:daemon adm:adm ... ... /> cut -d: -f 3- /etc/passwd #从第三个字段开始显示,直到最后一个字段。 0:0:root:/root:/bin/bash 1:1:bin:/bin:/sbin/nologin 2:2:daemon:/sbin:/sbin/nologin 3:4:adm:/var/adm:/sbin/nologin 4:7:lp:/var/spool/lpd:/sbin/nologin ... ... 这里需要进一步说明的是,使用cut命令还可以剪切以字符数量为标量的部分字符,该功能通过-c选项实现,其不能与-d选项共存。 /> cut -c 1-4 /etc/passwd #取每行的前1-4个字符。 /> cut -c-4 /etc/passwd #取每行的前4个字符。 root bin: daem adm: ... ... /> cut -c4- /etc/passwd #取每行的第4个到最后字符。 t:x:0:0:root:/root:/bin/bash :x:1:1:bin:/bin:/sbin/nologin mon:x:2:2:daemon:/sbin:/sbin/nologin :x:3:4:adm:/var/adm:/sbin/nologin ... ... /> cut -c1,4 /etc/passwd #取每行的第一个和第四个字符。 rt b: dm a: ... ... /> cut -c1-4,5 /etc/passwd #取每行的1-4和第5个字符。 root: bin:x daemo adm:x

相关知识

Golang字符串多行处理攻略:轻松实现代码美观与可读性
1.字符串详解
字符串相关问题
字符串常用方法
字符串
字符串 (C++/CX)
字符串(C# 编程指南)
字符串基础(C# 编程指南)
咨询一下删除字符串的解释str=str.replace(/(&
设s 1=“GOOD”,s2=“BYE”则字符串s1和s2连接后的结果是

网址: shell 字符串分割与连接 https://m.huajiangbk.com/newsview706386.html

所属分类:花卉
上一篇: 香兰与大花蕙兰有什么区别
下一篇: linux expect的使用详