shell 字串分割與連線

2021-10-01 18:44:05 字數 3259 閱讀 2952

your_id=$-on-$ 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$bbb45

67 filename=$1

8 string1=exist

9 string2=xi

10 command="

cat $filename | grep $string1 | grep $string2"11

eval $command

1213

14 [~/shell]# sh test.sh runshell.sh

15 echo "

exist;";

16 echo "

notexist;

";

原來在shell中如果遇到要擷取字串的情況,就呼叫awk中的substr來實現。

今天了解到一種新的方法,原來shell中本身就支援這種用法。

如,有一字串」12345678″,現在要擷取第三個到第六個字元的字串區間。

則可以:

1 [xok.la ~]$ export str="

123456789

"2 [xok.la ~]$ echo $

3456

4 [xok.la ~]$ unset str

從以上第二個表示式可以看出這個用法,即:$

可以歸納為:$,且支援表示式,如:6-3。

補充一下從網上找到一些其他的用法:

shell字串的擷取的問題:

一、linux shell 擷取字元變數的前8位,有方法如下:

1.expr substr "$a"

182.echo $a|awk '

'3.echo $a|cut -c1-8

4.echo $

5.expr $a : '

\(.\\).*

'6.echo $a|dd bs=1 count=8

2>/dev/null

二、按指定的字串擷取

1、第一種方法:

$ 從左向右擷取最後乙個string後的字串

$從左向右擷取第乙個string後的字串

$從右向左擷取最後乙個string後的字串

$從右向左擷取第乙個string後的字串

「*」只是乙個萬用字元可以不要

例子:$ myvar=foodforthought.jpg

2、第二種方法:$:擷取變數varible從n1到n2之間的字串。

可以根據特定字元偏移和長度,使用另一種形式的變數擴充套件,來選擇特定子字串。試著在 bash 中輸入以下行:

$ exclaim=cowabunga

$ echo $

cow

$ echo $

abunga

這種形式的字串截斷非常簡便,只需用冒號分開來指定起始字元和子字串長度。

三、按照指定要求分割:

比如獲取字尾名

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

4.既然提到了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 #取每行的第乙個和第四個字元。

rtb:

dma:

... ...

/> cut -c1-4,5 /etc/passwd #取每行的1-4和第5個字元。

root:

bin:x

daemo

adm:x

Shell 字串分割

a hello,world,test 1 使用awk分割字串,取出其中一部分 這可能是最容易想到的,同時也是awk最常見的應用之一。echo a awk f awk的 f開關指定分隔符,多個分隔符應當寫在中。2 使用ifs將字串分割為陣列 要將 a分割開,可以這樣 old ifs ifs ifs a...

Shell指令碼分割字串

以字元進行切割時 從字串左邊開始計數 如果想從字串的左邊開始計數,那麼擷取字串的具體格式如下 其中,string 是要擷取的字串,start 是起始位置 從左邊開始,從 0 開始計數 length 是要擷取的長度 省略的話表示直到字串的末尾 url c.biancheng.net echo 結果為b...

Python 分割字串與拼接字串

號 實現字串連線 zhrq 95 zhrq95 a 95 b zhrq print b a 注 是反引號,因為其容易看錯,此方法不推薦 zhrq95 print b str a zhrq95 print b repr a repr a 與上面的類似 zhrq95 split 這個函式的作用是將字串根...