在开始说sed命令前先说说正则表达式
. 匹配任一个字符
^ 匹配行首
$ 匹配行结束
[a-z] ##匹配任意一个小写字母
[A-Z] ##匹配任意一个大写字母
[0-9] ##匹配任意一个数字
\{min,max\} ##匹配精确的数目的字符串
[a-z]\{3,7\} ###匹配3~7个小写字母
如果 max为空值 如 [0-9]\{3,\} ##匹配大于等于3位的数字
非运算
[^a-zA-Z] ##非字母 与^[a-zA-Z] 不同 后者匹配行首为字母
寄存器
利用\(\)把正则表达式分开,把匹配到的内容放到1~9号寄存器。
$s/\(.*\)\(.*\)/\2\1/
交换两个字段
命令 sed 流编辑器
格式 : sed command file
替换
sed 's/Unix/UNIX/' intro ###把文件中的 Unix 替换成UNIX
sed 命令不对源文件做任何改变,需要把输出重定向到输出文件才可以保存改变后的文件
sed 's/Unix/UNIX/' intro > temp ##把文件中的Unix替换成UNIX后保存到temp文件
-n 参数
指定输出某些行
如:
sed -n '1,2p' intro ###显示文件intro的1,2两行
sed -n '/Unix/p' intro ###显示带有Unix字符的行
其中p打印输出的意思
删除行
利用 d命令
sed -n '1,2d' intro ###删除文件intro的1,2两行
sed -n '/Unix/d' intro ###删除带有Unix字符的行
sort 命令
sort names ###对names文件进行排序 默认方式 升序排序
-u选项
sort -u names ###对names文件进行排序 取出重复的行
-r选项
sort -r names ##对names文件进行倒序排序
-o 选项 指定标准输出
sort names > sorted_names ###利用重定向输出来写文件
相当于
sort names -o sorted_names
但是想把排序后的内容重新写到源文件,如果利用以下命令并不能达到效果:
sort names >names
只会在屏幕先显示排序后的结果 源文件不改变
这时我们可以使用-o参数来实现这样的需求了
sort names -o names
当然也可以使用一个临时文件,通过重定向来实现
sort names > temp
cat temp>names
-n 参数以算术方法排序
sort -n data ###对data文件进行算术排序
+1n +3n选项
跳过前一字段,跳过前面3个字段 进行数字排序
如
#cat data
24
13
344
1233
#sort +1n data
13
24
1233
344
正则表达式
. 匹配任一个字符
^ 匹配行首
$ 匹配行结束
[a-z] ##匹配任意一个小写字母
[A-Z] ##匹配任意一个大写字母
[0-9] ##匹配任意一个数字
\{min,max\} ##匹配精确的数目的字符串
[a-z]\{3,7\} ###匹配3~7个小写字母
如果 max为空值 如 [0-9]\{3,\} ##匹配大于等于3位的数字
非运算
[^a-zA-Z] ##非字母 与^[a-zA-Z] 不同 后者匹配行首为字母
寄存器
利用\(\)把正则表达式分开,把匹配到的内容放到1~9号寄存器。
$s/\(.*\)\(.*\)/\2\1/
交换两个字段
命令 sed 流编辑器
格式 : sed command file
替换
sed 's/Unix/UNIX/' intro ###把文件中的 Unix 替换成UNIX
sed 命令不对源文件做任何改变,需要把输出重定向到输出文件才可以保存改变后的文件
sed 's/Unix/UNIX/' intro > temp ##把文件中的Unix替换成UNIX后保存到temp文件
-n 参数
指定输出某些行
如:
sed -n '1,2p' intro ###显示文件intro的1,2两行
sed -n '/Unix/p' intro ###显示带有Unix字符的行
其中p打印输出的意思
删除行
利用 d命令
sed -n '1,2d' intro ###删除文件intro的1,2两行
sed -n '/Unix/d' intro ###删除带有Unix字符的行
sort 命令
sort names ###对names文件进行排序 默认方式 升序排序
-u选项
sort -u names ###对names文件进行排序 取出重复的行
-r选项
sort -r names ##对names文件进行倒序排序
-o 选项 指定标准输出
sort names > sorted_names ###利用重定向输出来写文件
相当于
sort names -o sorted_names
但是想把排序后的内容重新写到源文件,如果利用以下命令并不能达到效果:
sort names >names
只会在屏幕先显示排序后的结果 源文件不改变
这时我们可以使用-o参数来实现这样的需求了
sort names -o names
当然也可以使用一个临时文件,通过重定向来实现
sort names > temp
cat temp>names
-n 参数以算术方法排序
sort -n data ###对data文件进行算术排序
+1n +3n选项
跳过前一字段,跳过前面3个字段 进行数字排序
如
#cat data
24
13
344
1233
#sort +1n data
13
24
1233
没有评论:
发表评论