[b]shell编程第三章[/b]
1、查找文本
grep
grep [options] pattern-spec [files]
options:
-E:使用正则表达式匹配,可取代egrep
-F:使用固定字符串匹配,可取代fgrep
-e:
-f:
-i:模式匹配时忽略大小写差异
-l:列出匹配模式的文件名
-q:
-s:
-v:
2、正则表达式
\ : 打开或关闭字符的特殊意义
. : 匹配任意一个字符, 但NUL除外
* : 匹配在它之前字符的任意个数目
^ : 从字符串或文本行的起始位置匹配
$ : 匹配字符串或文本行的结尾处
[...] : 匹配方括号中的任一字符,
区间表达式(匹配前面字符出现的次数)
\{n,m\} bre
{n,m} ere
\( \) bre 将\(与\)间的模式存储在‘特殊的空间’,可存9个
\n : bre 重复在\(与\)中第n个子模式至此点的模式
如:\(ab\).*\1 匹配ab组合出现两次,中间可出现任意字符
+ : ere 匹配前面正则表达式1个或多个实例
? : ere 匹配前面正则表达式0个或1个实例
| : ere 匹配|前或后的表达式
(): ere 匹配方括号里的表达式群
3、流编辑器sed:处理简单字符串替换的工具
语法:sed [-n] 'editing-command' file
sed [-n] -e 'editing-command' file
sed [-n] -f script-file
例: sed 's/:.*//' file 删除冒号后面的字符并输出
sed 's/\\/\&dd,/g' file 将文件中的\替换成&dd, /g标识匹配所有
sed -n '1,3p' file 打印文件中1-3行的内容
sed '/bab/,/bac/ s/bad/bag/g' file
4、cut [options] file
options:
-c:以字符为主
-f:以字段为主,默认制表符为字段分隔符
-d:定义字段分隔符
例:ls -l | cut -c 1-10
5、join file file
以第一个键值作结合,将结果产生至输出
1、查找文本
grep
grep [options] pattern-spec [files]
options:
-E:使用正则表达式匹配,可取代egrep
-F:使用固定字符串匹配,可取代fgrep
-e:
-f:
-i:模式匹配时忽略大小写差异
-l:列出匹配模式的文件名
-q:
-s:
-v:
2、正则表达式
\ : 打开或关闭字符的特殊意义
. : 匹配任意一个字符, 但NUL除外
* : 匹配在它之前字符的任意个数目
^ : 从字符串或文本行的起始位置匹配
$ : 匹配字符串或文本行的结尾处
[...] : 匹配方括号中的任一字符,
区间表达式(匹配前面字符出现的次数)
\{n,m\} bre
{n,m} ere
\( \) bre 将\(与\)间的模式存储在‘特殊的空间’,可存9个
\n : bre 重复在\(与\)中第n个子模式至此点的模式
如:\(ab\).*\1 匹配ab组合出现两次,中间可出现任意字符
+ : ere 匹配前面正则表达式1个或多个实例
? : ere 匹配前面正则表达式0个或1个实例
| : ere 匹配|前或后的表达式
(): ere 匹配方括号里的表达式群
3、流编辑器sed:处理简单字符串替换的工具
语法:sed [-n] 'editing-command' file
sed [-n] -e 'editing-command' file
sed [-n] -f script-file
例: sed 's/:.*//' file 删除冒号后面的字符并输出
sed 's/\\/\&dd,/g' file 将文件中的\替换成&dd, /g标识匹配所有
sed -n '1,3p' file 打印文件中1-3行的内容
sed '/bab/,/bac/ s/bad/bag/g' file
4、cut [options] file
options:
-c:以字符为主
-f:以字段为主,默认制表符为字段分隔符
-d:定义字段分隔符
例:ls -l | cut -c 1-10
5、join file file
以第一个键值作结合,将结果产生至输出