- 浏览: 52039 次
- 性别:
- 来自: 北京
文章分类
最新评论
shell编程笔记-流编辑Sed
第七章 流编辑
什么是sed
挑选编辑器
UNIX/Linux世界中,有许多的文本编辑器可供选择。例如,最常使用的VI和emacs。在有了自己最熟悉的编辑利器后,才能轻松处理UNIX下各种管理和编辑任务。
像VI,emacs这类编辑器,被称为交互式编辑器。交互式编辑器虽然很棒,但是当我们需要在程序中完成文本处理工作时,它就帮不上忙了。此时就需要一些能够在命令行完成的编辑工具。
我们期待一切管理流程都能自动化,包括能够以批处理的方式编辑文件。许多文本编辑的需求都是对文本的每一行进行相同的操作。这样的处理就能够用sed来完成。
sed号称流编辑器。什么是流编辑器呢?流编辑器可以对从管道这样的标准输入接收的数据进行编辑。因此,无需将要编辑的数据存储在磁盘上的文件中。因为可以轻易将数据管道输出到sed,所以,将sed用作强大的shell脚本中长而复杂的管道很容易。
Sed的版本
查看版本方式
[houchangren@ebsdi-23260-oozie ~]$ sed --version GNU sed version 4.1.5 Copyright (C) 2003 Free SoftwareFoundation, Inc. This is free software; see the source forcopying conditions. There is NO warranty; not even for MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE, to the extent permitted by law.
Sed实例
Sed的工作方式
sed通过对输入数据执行任意数量用户指定的编辑操作(命令)。sed是基于行的,因此
按顺序对每一行执行命令。然后,sed将其结果写入标准输出(stdout ),它不修改任何输入
文件。
参数列表参考:
http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html
示例:
[houchangren@ebsdi-23260-oozie shell]$ head -n5 /etc/passwd > /tmp/passwd.bak [houchangren@ebsdi-23260-oozie shell]$cat /tmp/passwd.bak 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [houchangren@ebsdi-23260-oozie shell]$ sed -e 'd' /tmp/passwd.bak [houchangren@ebsdi-23260-oozie shell]$ sed -e '1d' /tmp/passwd.bak 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [houchangren@ebsdi-23260-oozie shell]$ sed -e '3d' /tmp/passwd.bak root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
上方的‘d’就是参数应用就是默认的就是删除每行,指定数字就删除第几行的记录,第一次删除了第一行1行显示后四条。第二次删除第3条,显示剩余其他4条。
NOTE
在该例中,还有几件事要注意:
1)根本没有修改/tmp/passwd.bak这还是因为sed只读取在命令行指定的文件,将其用作输入-它不试图修改该文件。
2)要注意的事是sed是面向行的。’d’命令不是简单地告诉sed一下子删除所有输入数据。相反,sed逐行将/etc/passwd.bak的每一行读入其称为模式缓冲区的内部缓冲区一旦将一行读入模式缓冲区,它就执行’d’命令,然后打印模式缓冲区的内容(在本例中没有内容).如果不使用地址,命令将应用到所有行。
3)括起‘d’命令的单引号的用法。养成使用单引号来括起scd命令的习惯是个好主意,这样可以禁用shell扩展。
Sed工作的地址范围
指定命令的操作行区域,比如下边1-2行和3-6行,当然没有第6行,就只有多少删除多少了。
[houchangren@ebsdi-23260-oozie shell]$ sed -e '1,2d' /tmp/passwd.bak daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin [houchangren@ebsdi-23260-oozie shell]$ sed -e '3,6d' /tmp/passwd.bak root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin
sed忽略注释
[houchangren@ebsdi-23260-oozie shell]$ cat /etc/rc.local #!/bin/sh # # This script will be executed *after* allthe other init scripts. # You can put your own initialization stuffin here if you don't # want to do the full Sys V style initstuff. touch /var/lock/subsys/local hive --service hiveserver & [houchangren@ebsdi-23260-oozie shell]$ sed -e '/^#/d' /etc/rc.local | more touch /var/lock/subsys/local hive --service hiveserver & [houchangren@ebsdi-23260-oozie shell]$ sed -e '/^[^#]/d' /etc/rc.local | more #!/bin/sh # # This script will be executed *after* allthe other init scripts. # You can put your own initialization stuffin here if you don't # want to do the full Sys V style initstuff.
规则表达式
Sed中使用的规则表达式字符
字符 |
描述 |
^ |
与行首匹配 |
$ |
与行尾匹配 |
. |
与任意一个字符匹配 |
* |
与前一个字符的零个或多个出现匹配 |
[] |
与[]之内的所有字符匹配 |
Sed规则表达式实例
规则表达式 |
描述 |
/./ |
将与包含至少一个字符的任何行匹配 |
/../ |
将与包含至少两个字符的任何行匹配 |
/^#/ |
将与以‘#’开头的任意行匹配,通常这是注释 |
/}$/ |
将与‘}’结束的任意行匹配 |
/} *$/ |
注意在}后面有一个空格,这将与‘}’后而跟随零个或多个空格结束的任意行匹配配 |
/[abc]/ |
将与包含小写字母‘a,b,c的任意行匹配 |
/^[abc]/ |
将与以a,b,c任何开始的任何行匹配 |
-n参数 这个选项告诉sed 除非明确要求打印模式空间,否则不这样做。
[houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/^[echo]/p' user_login.sh echo " user $1 is on" else echo " user $1 is off" [houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/[abc]/p' user_login.sh #!/bin/bash function user_login(){ echo " user $1 is on" echo " user $1 is off" [houchangren@ebsdi-23260-oozie shell]$ cat a.c #include <stdio.h> #include <math.H> int main (){ // int base,n; // scanf("%d,%d\n",&b,&n) } [houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/main[[:space:]]*(/,/^ }/p' a.c | more int main (){ // int base,n; // scanf("%d,%d\n",&b,&n) } [houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/^\//p' a.c | more // int base,n; // scanf("%d,%d\n",&b,&n)
强大的Sed功能
替换
替换公式: sed -e s[符号][要替换的字符][符号][替换后的字符][符号][g]
实例:
[houchangren@ebsdi-23260-oozie data]$ cattwister.txt //查看一信息 I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. [houchangren@ebsdi-23260-oozie data]$ sed -e 's/wish/want/' twister.txt //替换每一行的第一个匹配 I want to wish the wish you wish to wish,but if you wish the wish the witch wantes, I won't wish the wish you wish towish. I want to wish the wish you wish to wish,but if you wish the wish the witch wantes, I won't wish the wish you wish towish. I want to wish the wish you wish to wish,but if you wish the wish the witch wantes, I won't wish the wish you wish towish. I want to wish the wish you wish to wish,but if you wish the wish the witch wantes, I won't wish the wish you wish towish. [houchangren@ebsdi-23260-oozie data]$ sed -e 's/wish/want/g' twister.txt //替换匹配到的所有的 I want to want the want you want to want,but if you want the want the witch wantes, I won't want the want you want towant. I want to want the want you want to want,but if you want the want the witch wantes, I won't want the want you want towant. I want to want the want you want to want,but if you want the want the witch wantes, I won't want the want you want towant. I want to want the want you want to want,but if you want the want the witch wantes, I won't want the want you want towant. [houchangren@ebsdi-23260-oozie data]$ sed -e '1,2s/wish/want/' twister.txt //替换1到2行的第一个匹配 I want to wish the wish you wish to wish,but if you wish the wish the witch wantes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. [houchangren@ebsdi-23260-oozie data]$ sed -e '1,2s/wish/want/g' twister.txt //替换1到2行的所有匹配 I want to want the want you want to want,but if you want the want the witch wantes, I won't want the want you want towant. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. I wish to wish the wish you wish to wish,but if you wish the wish the witch wishes, I won't wish the wish you wish towish. [houchangren@ebsdi-23260-oozie data]$
因为有的时候需要操作’/’符号,那么再用‘/’线
来做符号就不方便了,可以改成其他的,比如冒号‘:’
[houchangren@ebsdi-23260-oozie data]$ cat hivepath.txt /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive [houchangren@ebsdi-23260-oozie data]$ sed -e s:/usr/local:/usr/lib:g hivepath.txt /usr/lib/hive-0.7.1-cdh3u6/bin/hive /usr/lib/hive-0.7.1-cdh3u6/bin/hive /usr/lib/hive-0.7.1-cdh3u6/bin/hive /usr/lib/hive-0.7.1-cdh3u6/bin/hive
过滤所有的html标签实例
[houchangren@ebsdi-23260-oozie data]$ cat test.html <!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <BODY> I'mtest html </BODY> </HTML> [houchangren@ebsdi-23260-oozie data]$ sed -e 's/<[^>]*>//g' test.html New Document I'mtest html
组合命令
组合多条命令
在同时使用多个命令的时候可以使用分号“;”
[houchangren@ebsdi-23260-oozie data]$ sed -e '=' fruit.txt // 等号=是显示行号 1 %%banae 2 banana 3 apple 4 Presimmon 5 %%banae 6 apple 7 Banana 8 orange 9 presimmon [houchangren@ebsdi-23260-oozie data]$ sed -e '=;p' fruit.txt //显示行号和打印默认会打印所以两次 1 %%banae %%banae 2 banana banana 3 apple apple 4 Presimmon Presimmon 5 %%banae %%banae 6 apple apple 7 Banana Banana 8 orange orange 9 presimmon presimmon [houchangren@ebsdi-23260-oozie data]$ sed -n -e '=;p' fruit.txt //指定-n后打印p参数的命令 1 %%banae 2 banana 3 apple 4 Presimmon 5 %%banae 6 apple 7 Banana 8 orange 9 Persimmon [houchangren@ebsdi-23260-oozie data]$ sed -n -e 'p' -e = fruit.txt //-e可以指定多个命令 %%banae 1 banana 2 apple 3 Presimmon 4 %%banae 5 apple 6 Banana 7 orange 8 presimmon 9
有时候当太多的命令需要连接一起执行的时候-e可能也不够使用了,可以使用-f指定文本,然后在文本中编写命令
[houchangren@ebsdi-23260-oozie data]$ cat hivepath.txt /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive /usr/local/hive-0.7.1-cdh3u6/bin/hive //1d是删除一行,接着是/usr/local替换成/usr/bin,接着打印,接着显示行号 [houchangren@ebsdi-23260-oozie data]$ cat ../sed/test.sed 1d s:/usr/local/:/usr/lib/:g p = [houchangren@ebsdi-23260-oozie data]$ sed -n -f ../sed/test.sed hivepath.txt /usr/lib/hive-0.7.1-cdh3u6/bin/hive 2 /usr/lib/hive-0.7.1-cdh3u6/bin/hive 3 /usr/lib/hive-0.7.1-cdh3u6/bin/hive 4
将多条命令应用到一个地址范围
在指定了一个地址范围比如 1-5行,然后执行多个操作
[houchangren@ebsdi-23260-oozie data]$ head -n10 /etc/passwd > pwd.piece [houchangren@ebsdi-23260-oozie data]$ cat pwd.piece 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 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin news:x:9:13:news:/etc/news: [houchangren@ebsdi-23260-oozie data]$ sed -n -e'1,5{s:/bin/bash:/bin/sh:g;s/:/|/g;p}' pwd.piece [houchangren@ebsdi-23260-oozie data]$ sed -n -e '1,5{s:/bin/bash:/bin/sh:g;s/:/|/g;p}' pwd.piece root|x|0|0|root|/root|/bin/sh 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 lp|x|4|7|lp|/var/spool/lpd|/sbin/nologin [houchangren@ebsdi-23260-oozie data]$ [houchangren@ebsdi-23260-oozie data]$ cat ../sed/pwd.sed 1,5{ s:/bin/bash:/bin/sh:g s/:/|/g p } [houchangren@ebsdi-23260-oozie data]$ sed -n -f ../sed/pwd.sed pwd.piece root|x|0|0|root|/root|/bin/sh 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 lp|x|4|7|lp|/var/spool/lpd|/sbin/nologin
实例的例子
LINUX和DOS/Windows系统纯文本格式的换行方式是不同的。这个脚本将UNIX风格的文本转换成DOS/windows格式。你可能知道,基于DOS、windows的文本文件在每一行末尾有一个CR(回车)和LF(换行),而UNIX文本只有一个换行。有时可能需要将某unix文本移至
Windows系统,该脚本将为你执行必需的格式转换.
>>> sed -e ‘s/$/\r/’myunix.txt > mydos.txt
在该脚本中,‘$’规则表达式将与行的末尾匹配,而`\r'告诉sed在其之前插入个回车。
在换行之前插入回车,每一行立即就以CR/LF结束。
反之,有好多的时候下载的网络文件是dos/windows文件,在unix操作确实有问题,比如bash。用sed调用将把dos/windows格式的文本转换成可信赖的unix格式
>>> sed –e ‘s/.$//’ mydos.txt >myunix.txt
该脚本的工作原理很简单:替代规则表达式与一行的的最末字符匹配,而该字符恰好就是回车。我们用空字符替换它,从而将其从输出中彻底删除。如果使用改脚本,并注意到己经删除了输出中每行的最末字符,那么,你就指定了已经是UNIX式的文本文件。
Sed实践
要求:
1.把“小明“的名字改成“李小明”;
2.删除头三行
3.显示5-10行
4.删除包含“排除“的行
5.显示所有生日在Nov和Dec之间的行
6.所有姓张开头的行,前边标记 ***
7.用“试用期人员“替换包含”试用“的行
8.把刘发明的生日 1986/11/11
9.删除所有的空白行
10.写一个脚本,将第一行插入Personnel File ,删除所有以500结尾的工资,显示文件内容,把电话号码和生日颠倒一下,在文件的结尾添加the end。
11.把包含“试用”的行中姓名提取出来,然后正行替换成“试用人员:”+name
数据内容:
[houchangren@ebsdi-23260-oozie data]$ cat persons.txt 小明:010-68239343:我是经理:1988/01/10:5000 黎明:010-68239343:我是经理:1988/08/10:5000 张学友:010-68239343:我是经理:1988/04/10:5000 周云飞:010-68239343:业务排除了。:1988/10/10:500 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 大荒西:010-68239343:没有描述:1988/10/10:1000 斯蒂芬:010-68239343:没有描述:1988/10/10:1000 甄格大:010-68239343:试用期中.:1988/10/10:200
任务操作: 1. [houchangren@ebsdi-23260-oozie data]$ sed -n -e 's:小明:李小明:gp' persons.txt 李小明:010-68239343:我是经理:1988/01/10:5000 2. [houchangren@ebsdi-23260-oozie data]$ sed -e '1,3d' persons.txt 周云飞:010-68239343:业务排除了。:1988/10/10:500 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 大荒西:010-68239343:没有描述:1988/10/10:1000 斯蒂芬:010-68239343:没有描述:1988/10/10:1000 甄格大:010-68239343:试用期中.:1988/10/10:200 3. 周云飞:010-68239343:业务排除了。:1988/10/10:500 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 4. [houchangren@ebsdi-23260-oozie data]$ sed -e '/排除/d' persons.txt 小明:010-68239343:我是经理:1988/01/10:5000 黎明:010-68239343:我是经理:1988/08/10:5000 张学友:010-68239343:我是经理:1988/04/10:5000 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 大荒西:010-68239343:没有描述:1988/10/10:1000 斯蒂芬:010-68239343:没有描述:1988/10/10:1000 甄格大:010-68239343:试用期中.:1988/10/10:200 5. [houchangren@ebsdi-23260-oozie data]$ sed -n '/[:::][0-9]*[:/:]1[1-2]/p' persons.txt 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 6. [houchangren@ebsdi-23260-oozie data]$ sed -n 's/^张/***张/p' persons.txt ***张学友:010-68239343:我是经理:1988/04/10:5000 7. [houchangren@ebsdi-23260-oozie data]$ sed -e 's/^.*试用.*$/试用期人员/g' persons.txt 小明:010-68239343:我是经理:1988/01/10:5000 黎明:010-68239343:我是经理:1988/08/10:5000 张学友:010-68239343:我是经理:1988/04/10:5000 周云飞:010-68239343:业务排除了。:1988/10/10:500 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 大荒西:010-68239343:没有描述:1988/10/10:1000 斯蒂芬:010-68239343:没有描述:1988/10/10:1000 试用期人员 8. [houchangren@ebsdi-23260-oozie data]$ sed -n -e '/刘发明/s/:[0-9]*\/.*\/.*:/:1986\/11\/11:/gp' persons.txt 刘发明:010-68239343:没有描述:1986/11/11:5340 9. [houchangren@ebsdi-23260-oozie data]$ sed -e '/^$/d' persons.txt 小明:010-68239343:我是经理:1988/01/10:5000 黎明:010-68239343:我是经理:1988/08/10:5000 张学友:010-68239343:我是经理:1988/04/10:5000 周云飞:010-68239343:业务排除了。:1988/10/10:500 丽泽卡:010-68239343:没有描述:1988/12/10:2000 刘发明:010-68239343:没有描述:1988/11/10:5340 大荒西:010-68239343:没有描述:1988/10/10:1000 斯蒂芬:010-68239343:没有描述:1988/10/10:1000 甄格大:010-68239343:试用期中.:1988/10/10:200 10. [houchangren@ebsdi-23260-oozie data]$ cat ../sed/person.sed /500$/d s/\(.*\)\(:.*:\)\(.*\)\(:.*:\)\(.*\)/\1\4\3\2\5/g 1i personnel file $a the end [houchangren@ebsdi-23260-oozie data]$sed -f ../sed/person.sed persons.txt personnel file 小明:1988/01/10:我是经理:010-68239343:5000 黎明:1988/08/10:我是经理:010-68239343:5000 张学友:1988/04/10:我是经理:010-68239343:5000 丽泽卡:1988/12/10:没有描述:010-68239343:2000 刘发明:1988/11/10:没有描述:010-68239343:5340 大荒西:1988/10/10:没有描述:010-68239343:1000 斯蒂芬:1988/10/10:没有描述:010-68239343:1000 甄格大:1988/10/10:试用期中.:010-68239343:200 the end 11. [houchangren@ebsdi-23260-oozie data]$ sed -n -e '/试用/s/\(.*\):.*:.*:.*:.*/试用期人员:\1/gp' persons.txt | more 试用期人员:甄格大
相关推荐
这两个强大的文本处理工具常与Shell配合使用,awk用于处理结构化的数据,sed则擅长流编辑,对文本进行查找替换等操作。 通过阅读《LINUX与UNIX SHELL编程指南》,我们可以深入了解Shell编程的精髓,提升自动化任务...
sed是一种流编辑器,主要用于处理文本流。它不会直接修改原文件,而是对文本进行临时处理后输出结果。sed有两种调用方式: - 命令行直接指定表达式:`sed [options] '正则表达式 sedcommand' input-files` - 使用...
- **sed**:流编辑器,用于文本转换和过滤。 - **call**:调用外部程序。 #### 三、正则表达式 - **定义**:正则表达式是用来在一次搜索中匹配相同字符的一种字符模式。在大多数 Unix 程序中,正则表达式被封装在...
1. **笔记.zip**:这可能包含作者编写的关于shell编程的笔记,涵盖了基础概念、语法、实例和技巧。 2. **资料.zip**:可能包含更详细的文档、教程或示例,帮助读者深入理解shell编程的各个方面。 3. **.idea.zip**:...
在深入探讨《LINUX与UNIX SHELL编程指南》的读书笔记之前,让我们先理解什么是Linux和Unix Shell编程。Linux和Unix是两种广泛使用的类UNIX操作系统,它们提供了命令行界面(CLI),用户通过输入命令来执行任务。...
本资源是 Shell 学习笔记的总结,涵盖了 Shell 的基本概念、类型、变量、进程、权限、管道、POSIX、grep、sed、awk 等命令和编程语言。 一、 Shell 的类型和特点 Shell 是一种命令行界面,提供了访问操作系统的...
- **sed**:流编辑器,常用于文本替换和转换。 - **awk**:用于处理结构化文本的数据处理工具。 - **diff**:比较文件或目录的差异。 - **tar**:打包和解压文件。 **脚本进阶** - **环境变量**:如PATH、HOME等,...
《LINUX与UNIX SHELL编程指南》这本书深入浅出地介绍了如何利用Shell进行高效编程,帮助读者提升在Linux和Unix环境下的工作效率。下面,我们将探讨一些核心的知识点: 1. **Shell脚本基础**:Shell脚本是通过Shell...
《Shell从入门到精通》这份笔记详尽地介绍了Shell脚本语言的基础知识和实战应用,旨在帮助读者快速掌握Shell编程,提升日常运维工作的效率。Shell是Linux系统中的一个命令解释器,同时也是一种强大的脚本语言,它...
《LINUX与UNIX SHELL编程指南》是一本深入讲解Linux和...结合书中的实例和《LINUX与UNIX SHELL编程指南》读书笔记-二次发布版.pdf,学习效果会更佳,因为笔记通常会提炼关键概念并提供实践经验,有助于巩固理论知识。
此外,Shell提供了丰富的内置函数和命令,如grep用于搜索文本模式,sed用于流编辑,awk用于处理和分析数据,find用于查找文件,xargs用于将标准输入转换为命令参数等。这些工具的掌握可以极大地提升你的系统管理和...
Unix Shell 实例精解学习笔记 本文档主要介绍 Unix Shell 的基础知识,涵盖了 Shell 的定义、主要功能、常见 Shell 命令、正则表达式的基础知识和应用。 一、Unix Shell 定义 Shell 是一种特殊的程序,被用作用户...
《LINUX与UNIX SHELL编程指南》读书笔记.pdf可能包含了作者对原书的解读和实践经验。笔记中可能会强调错误处理、调试技巧,以及如何利用awk、sed等文本处理工具增强Shell脚本的功能。此外,文件和目录的权限管理、...
`sed`是一种流编辑器,它能够对输入流(文本)进行编辑。下面介绍了一些基本的`sed`命令。 ##### 示例1: 替换特定字符串 - **命令**: `sed 's/pattern/replacement/g' file` - **功能**: 将文件`file`中的所有`...
这个压缩包中的"Shell脚本编程详解"很可能是书籍的电子版或笔记,包含了更深入的理论和实例。对于初学者,建议从理解基础语法开始,逐步练习编写简单的脚本,然后逐步挑战更复杂的任务,加深对Shell脚本的理解和应用...
- `sed`:流编辑器。 - `call`:电话簿管理工具。 #### 第二章:UNIX工具箱 - **正则表达式**: - 正则表达式是一种模式匹配工具,用于在文本中查找特定模式。 - 在大多数UNIX程序中,正则表达式被置于斜杠`/`...
以上只是对Shell编程基础知识的一个概览,实际应用中还有更多高级技巧和工具,如awk、sed、grep等,以及shell脚本的调试、优化等内容。通过深入学习和实践,可以更高效地管理和自动化Linux系统的任务。