0 linux三个文本处理工具:
grep, sed(流编辑器), awk
1 sed基本工作流程:
是行编辑器,
每一次把一行读取到内存中,后在内存中根据匹配模式,如果匹配则进行编辑(比如截取),
并把编辑后的结果输出到屏幕中.
sed仅仅是将匹配到的文本放在模式空间中进行处理,因此不会破坏原文本的内容。
2 sed写法格式:
sed [options] 'AddressCommand' file ... 表示针对file,根据操作位置address来执行command命令,动态编辑文件内容,格式中,操作内容和命令之间不需要有空格 options如下: -n: 静默模式,不再默认显示模式空间中的内容 -i: 直接修改原文件 -e SCRIPT -e SCRIPT:可以同时执行多个脚本 -f /PATH/TO/SED_SCRIPT sed -f /path/to/scripts file -r: 表示使用扩展正则表达式
sed操作Address介绍:
Address:指定地址/操作范围, 如下是定位操作范围的定义方法
方式1、StartLine,EndLine 指定起始结束行 比如1,100 表示指定1-100行的范围address $:最后一行 $-1: 倒数第二行 方式2、/RegExp/ 根据正则指定操作位置 /^root/ 表示以root开头的行 方式3、/pattern1/,/pattern2/ 第一次被pattern1匹配到的行开始,至第一次被pattern2匹配到的行结束,这中间的所有行 方式4、LineNumber 指定精确的行 方式5、StartLine, +N 从startLine开始,向后的N行;
sed COMMAND介绍:
d: 删除符合条件的行; eg: # sed '1,2d' sedfile 将1,2行的内容删除,并输出在控制台 此时 sedfile的内容不会变更 # sed '/oot/d' /etc/fstab p: 显示符合条件的行; a \string: 在指定的行后面追加新行,内容为string \n:可以用于换行 i \string: 在指定的行前面添加新行,内容为string r FILE: 将指定的文件的内容添加至符合条件的行处 # sed '1,2r /etc/issue' /etc/fstab 将文件/etc/fstab第1行,第二行后面分别增加/etc/issue文件内容 w FILE: 将地址指定的范围内的行另存至指定的文件中; s/pattern/string/修饰符: 查找并替换,默认只替换每行中第一次被模式匹配到的字符串,将查找模式pattern查找匹配到的字符串替换成string指定的字符 加修饰符 g: 全局替换 i: 忽略字符大小写 eg: ----> 商标表中修改配置文件: sed -i "s/%current_date%/$current_date/g" $target_dir/$ql 全局直接在目标文件$q内将字符%current_date%替换为$current_date这个变量的值 s/// ---> 这种分隔符不仅仅限制于/,也可以是 s###, s@@@ \(\), \1, \2
sed简单用法:
d: 删除符合条件的行; [root@chinadaas109 ~]# cat t 1,2099-12-30 2,2099-12-31 3,2099-02-31 HELLO WORLD [root@chinadaas109 ~]# sed '1,2d' t 3,2099-02-31 HELLO WORLD
sed替换字符串案例:
[root@chinadaas109 zhoumingtest]# sed 's/hello/HELLO/' zm1 HELLO ---> 源文件为hello world say good
sed练习:
1、删除/etc/grub.conf文件中行首的空白符; sed -r 's@^[[:spapce:]]+@@g' /etc/grub.conf 2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5; 这里 sed/// 使用 sed@@@来间隔 sed 's@\(id:\)[0-9]\(:initdefault:\)@\15\2@g' /etc/inittab 3、删除/etc/inittab文件中的空白行; sed '/^$/d' /etc/inittab 4、删除/etc/inittab文件中开头的#号; sed 's@^#@@g' /etc/inittab 5、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符; sed -r 's@^#[[:space:]]+@@g' /etc/inittab 6、删除某文件中以空白字符后面跟#类的行中的开头的空白字符及# sed -r 's@^[[:space:]]+#@@g' /etc/inittab 7、取出一个文件路径的目录名称; echo "/etc/rc.d/" | sed -r 's@^(/.*/)[^/]+/?@\1@g' 基名: echo "/etc/rc.d/" | sed -r 's@^/.*/([^/]+)/?@\1@g'
工作中遇到的 sed 源文件下替换字符串写法:
source ../../conf.properties target_dir=data_process_$DATE current_date=$(date +%Y-%m-%d) echo $current_date rm -rf $target_dir > /dev/null 2>&1 mkdir $target_dir # Generate the ql from the merge_table directory for ql in `ls merge_table | grep ql` do sed "s/%CHINADAASREDUCETASKS%/$MAPRED_REDUCE_TASKS/g" merge_table/$ql > $target_dir/$ql sed -i "s/%CHINDAASDATE%/$DATE/g" $target_dir/$ql sed -i "s/%current_date%/$current_date/g" $target_dir/$ql done
3 awk:
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.
awk也是行文本处理方式,将符合PATTERN的行放在内存中处理ACTION 并在显示界面中展示。
简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk 'PATTERN{ACTION}' file 其中,PATTERN是匹配格式 ACTION是要执行的动作 eg: [root@chinadaas12 zmtest]# df -lh | awk '{print $1}' Filesystem /dev/sda3 tmpfs /dev/sda1 [root@chinadaas12 zmtest]# df -lh | awk '{print $1,$3}' Filesystem Used /dev/sda3 2.5G tmpfs 0 /dev/sda1 26M [root@chinadaas12 zmtest]# awk -F: '{print $1,$3}' /etc/passwd 显示指定分隔符为 : root 0 bin 1 daemon 2 adm 3 lp 4
相关推荐
包括sed-4.2.1-setup.exe、sed-4.2.1-dep.zip、sed-4.2.1-bin.zip
Vim-101-hacks、Sed-and-Awk-101-Hacks、Linux-101-hacks 英文版(高清)PDF
正则表达式--强大的文本匹配工具,每个工程师都需要掌握的必备技能。这个文档看过一小时,算是基本入门了。 前提是有良好的Linux基础,对grep awk sed 要熟练。
Linux教程-linux文本处理-sed.docx
linux的强大的文本处理工具grep,sed,awk(文本处理三剑客)
sed awk grep sed awk grepsed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep sed awk grep
The book begins with an overview and a tutorial that demonstrate a progression in functionality from grep to sed to awk. sed and awk share a similar command-line syntax, accepting user instructions in...
Sed AWK编程指南Sed AWK编程指南Sed AWK编程指南
免积分下载。
之所以称为sed是因为它是一个流编辑器(stream editor),用于对许多文件执行一系列的编辑操作。awk是根据它的开发者Aho、Weinberger和Kernighan命名的。awk是一种编程语言,它可以使你很容易地处理结构化数据和生成...
Bash Shell提供了功能强大的文件处理工具:sed(流编辑器stream editor)和awk,都可使用正则表达式进行模式匹配。而grep又有助于理解sed和awk。
sed-awk-cheatsheet:您可以使用sed和awk做的事情
sed与awk 编写脚本利器。
Sed与awk_中英文高清版
sed awk 使用手册,linux unix 下常用的文本处理工具。用来处理格式化文本。
与sed和grep很相似,awk是一种样式扫描与处理工具。但其功能却大大强于sed和grep。awk提供了极其强大的功能:它几乎可以完成grep和sed所能完成的全部工作,同时,它还可以可以进行样式装入、流控制、数学运算符、...
sed awk高级编程案例,大量的sed awk等命令的实现功能对比,让你使用shell更好的融汇贯通
计算机软件基础:08第二章UNIX工具sed-awk.doc
awk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sedawk and sed