Linux string

Linux shell字符串操作

1. paste

1
$ paste file1.txt file2.txt

2. 判断字符串的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#0. 初始化
$ str="默认值"

#1. 读取var的值
$ ${var}

#2. 如果var没有定义, 那就返回默认值
$ echo ${var-"hello"} // echo ${var=hello}
hello
$ echo ${var-$str} // echo ${var=$hello}

#3. 如果var没有定义, 或者值为空, 那就返回默认值
$ var=""
$ echo ${var:-"hello"} //echo ${var:=$str}
hello

#4. 如果var声明了, 那就返回默认, 否则就返回空字符串
$ echo ${vv+$str}
默认值

$ echo ${var+str}

#5. 如果var没被设置, 那么就打印$ERR
$ echo ${var?$str} //echo ${var:?$str}

$ str1="a";str2="b";str3="c"
#6. 匹配之前所有以str开头进行声明的变量
$ echo ${!str*} //echo ${!str@}

2. 字符串操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#1. 初始值
$ url="http://www.xiaomi.com"

#2. 字符串长度
$ echo ${#url}
21

#3. 从position开始提取子串
$ echo ${url:3}

#4. 从position开始提取长度为length的自创
$ echo ${url:3:5}

#5. 从头开始, 删除匹配的最短的子串, substring可以正则表达式
$ echo ${url#substring}

#6. 从头开始,删除匹配的最长的子串
$ echo ${url##substring}

#7. 从尾开始, 删除匹配的最短的子串
$ echo ${url%substring}

#8. 从尾开始, 删除匹配的最长的子串
$ echo ${url%%substring}

$9. replacement来取代第一个substring
$ echo ${url/substring/replacement}

$10. replacement来取代所有的substring
$ echo ${url//substring/replacement}

#11. 假设string的前缀匹配substring, 那么就用replacement来取代匹配到的substring
$ echo ${url/#substring/replacement}

#12. 假设string的后缀匹配substring, 那么就用replacement来取代匹配到的substring
$ echo ${url/%substring/replacement}

3. 命令行中的字符串操作

1
2
3
4
5
6
7
#例如,把文件data_001~data_999名称改为对应的quantux_001~quantux_999
#使用'#'扔掉字符串, 留下之后的
for line in data_*;do mv $line quantux${line#data};done

#例如, 把文件001_quantux~999_quantux名称改为对应的data_001~data_999
#使用'%'扔掉字符串,留下之前的
for line in *_quantux;do mv $line data${line%quantux};done

Linux: dot
Linux: curly braces
Linux: square brackets