鸟哥Linux私房菜笔记(二):正则表达式、shell脚本
2015-02-10 10:43
561 查看
第12章 正则表达式
grep [-acinv] '搜索字符串' filename 其中-a表示在二进制文件以文本文件方式搜索,-c计算次数,
-i忽略大小写,-n输出行号,-v反向选择,即显示不含‘搜索字符串’的行。
行首与行尾 ^ $
[b]^ [/b]在[]内表示反向选择,在之外则表示定位在行首。
. 任意字符、+ 一个或一个以上字符、? 零个或一个字符、 ()里表示字符串。
sed [-nefr] [操作] 其中-n表示安静模式,只有经过sed处理的行才显示到标准输出,
-e直接在命令行模式进行sed操作编辑,-f直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作,-r支持扩展正则表达式语法,
操作说明:[n1[,n2]] function function有下面操作:a新增,c替换,d删除,i插入,p打印,
s搜索,还可以替换,通常s与正则表达式一起使用,如1,20s/old/new/g,其中g(global)表示全部替换。
例如: nl /etc/passwd | sed ‘2,5d’ 显示/etc/passwd内容并打印行号,同时删除第2到5行。
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
以下awk相关内容摘自http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html,详情见收藏
例如,last | awk '{print $1 "\t" $3}' 。 其中每行每个字段都有变量名称,就是$1、$2等。
awk的内置变量:NF为每行字段总数、NR为当前awk所处理的是“第几行”数据、FS为当前空格符,默认为空格。
diff [-bBi] from-file to-file 其中-b忽略一行中多个空白的差异,-B忽略空白行的不同,-i忽略大小写的不同。还有很多参数书中没有列出。
cmp [-s] file1 file2 其中-s将所有不同点的位都列出,而默认只列出第一处不同。cmp主要以位为单位比较,而diff主要以行为单位比较。
第13章 学习shell脚本
编写脚本,chmod a+x加读写权限,./或者sh 执行脚本。
算术运算可用declare -i 以外,还可以用var=$((运算内容))。
用判断条件,使用test命令。
例如下图为test接文件名的命令,其他还可检测文件权限、比较两个文件、比较整数、比较字符串、多重条件判断等。
test命令使用示例: test -e /dmtsai && echo "exist" || echo "Not exist" 判断文件夹是否存在,存在则打印exist,否则打印Not exist。
还可以使用判断符号[] ,不过要注意[]内每个字段(包括字段与[和]之间)都要以空格隔开。
shell脚本的默认变量:
shell脚本已经设置好一些指定变量了,其对应关系如上图所示。if…then…fi 和 case…in…esac :
shell脚本中使用函数功能:
grep [-acinv] '搜索字符串' filename 其中-a表示在二进制文件以文本文件方式搜索,-c计算次数,
-i忽略大小写,-n输出行号,-v反向选择,即显示不含‘搜索字符串’的行。
行首与行尾 ^ $
[b]^ [/b]在[]内表示反向选择,在之外则表示定位在行首。
. 任意字符、+ 一个或一个以上字符、? 零个或一个字符、 ()里表示字符串。
sed [-nefr] [操作] 其中-n表示安静模式,只有经过sed处理的行才显示到标准输出,
-e直接在命令行模式进行sed操作编辑,-f直接将sed的操作写在一个文件内,-f filename则可以执行filename内的sed操作,-r支持扩展正则表达式语法,
操作说明:[n1[,n2]] function function有下面操作:a新增,c替换,d删除,i插入,p打印,
s搜索,还可以替换,通常s与正则表达式一起使用,如1,20s/old/new/g,其中g(global)表示全部替换。
例如: nl /etc/passwd | sed ‘2,5d’ 显示/etc/passwd内容并打印行号,同时删除第2到5行。
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
1.命令行方式 awk [-F field-separator] 'commands' input-file(s) 其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。 在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
以下awk相关内容摘自http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html,详情见收藏
例如,last | awk '{print $1 "\t" $3}' 。 其中每行每个字段都有变量名称,就是$1、$2等。
awk的内置变量:NF为每行字段总数、NR为当前awk所处理的是“第几行”数据、FS为当前空格符,默认为空格。
diff [-bBi] from-file to-file 其中-b忽略一行中多个空白的差异,-B忽略空白行的不同,-i忽略大小写的不同。还有很多参数书中没有列出。
cmp [-s] file1 file2 其中-s将所有不同点的位都列出,而默认只列出第一处不同。cmp主要以位为单位比较,而diff主要以行为单位比较。
第13章 学习shell脚本
编写脚本,chmod a+x加读写权限,./或者sh 执行脚本。
算术运算可用declare -i 以外,还可以用var=$((运算内容))。
用判断条件,使用test命令。
例如下图为test接文件名的命令,其他还可检测文件权限、比较两个文件、比较整数、比较字符串、多重条件判断等。
test命令使用示例: test -e /dmtsai && echo "exist" || echo "Not exist" 判断文件夹是否存在,存在则打印exist,否则打印Not exist。
还可以使用判断符号[] ,不过要注意[]内每个字段(包括字段与[和]之间)都要以空格隔开。
shell脚本的默认变量:
shell脚本已经设置好一些指定变量了,其对应关系如上图所示。if…then…fi 和 case…in…esac :
shell脚本中使用函数功能:
function fname() { 程序段 }
其中函数也拥有内置变量。 shell脚本的追踪与调试:sh [-nvx] script.sh 其中-n不执行脚本仅查询语法, -v执行脚本前先将脚本内容输出到屏幕,-x将脚本执行过程显示到屏幕。
相关文章推荐
- shell脚本学习笔记之grep&正则表达式
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
- shell脚本学习笔记 (正则表达式)
- linux学习笔记-第十二课-Shell脚本之正则表达式(一)
- shell脚本学习笔记之正则表达式
- shell通配符与文本正则表达式学习笔记
- shell 脚本 正则表达式通配符之 "[]" [大三TJB_708]
- Linux 学习笔记 -- 第三部分 学习 shell 与 shell script -- 第12章 正则表达式与文件格式化处理
- shell和正则表达式使用笔记【未完】
- Shell笔记第六天 正则表达式
- Shell脚本中通过正则表达式匹配IP地址
- shell脚本学习:快速理解正则表达式之grep篇
- 让shell脚本中的正则表达式调用变量
- Shell脚本的编写,sed的使用以及一些正则表达式
- shell脚本学习:正则表达式之sed,tr篇
- 鸟书shell 学习笔记(二) shell中正则表达式相关
- shell脚本学习:正则表达式之sed,tr篇
- shell脚本系列-正则表达式介绍
- 转――[Shell学习笔记] Shell正则表达式与grep、sed、awk的特点
- [SHELL]正则表达式笔记(1)