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、第⼀种⽅法:
${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 0:0:root:/root:/bin/bash
bin 1:1:bin:/bin:/sbin/nologin
daemon 2:2:daemon:/sbin:/sbin/nologin
adm 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个字符。shell 字符串长度
/> cut -c-4 /etc/passwd #取每⾏的前4个字符。
root
bin:
daem
adm:
... ...
/> cut -c4- /etc/passwd #取每⾏的第4个到最后字符。
t 0:0:root:/root:/bin/bash
1:1:bin:/bin:/sbin/nologin
mon 2:2:daemon:/sbin:/sbin/nologin
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论