Linux Shell Scripting Cookbook 读书笔记 5

 

sed,awkblog

1. sed (string editor)get

使用-i能够将结果运用于原文件string

sed 's/text1/text2/' file > newfileit

mv newfile fileawk

其实能够使用 sed -i 's/text1/text2/' file 搞定变量

若是加后缀g表示所有替换,不加只会替换每行的第一处匹配sed

使用Ng选择从第几处开始匹配,第二个例子是为了说明不管使用/或者|或者其余什么字符,都是能够用做定界符的file

移除空白行command

sed '/^$/d'  # /pattern/d或移除匹配到的行,注意没有s了im

用&表示匹配到的内容,而且\d在sed命令中不支持。。

第二个例子,用\1 \2分别标记以前括号里pettern匹配到的内容

若是须要对sed中的内容求值,能够使用双引号

 

2. awk

awk一般由BEGIN,END和可以使用模式匹配的通用语句块三个部分组成,这三个部分都是可选的,脚本一般包含在双引号或者单引号中

1)执行BEGIN

2)读取stdin中的一行,而后执行pattern中的语句块,重复这个过程,直到文件读完;

    这个例子中没有提供pattern,则认为每一行都是匹配的

3) 执行END

awk中的print使用

1. print的参数以逗号分隔时,打印出来的参数以空格做为定界符

2. 双引号当作拼接操做符

echo在这里的做用是输入一行,使得awk只执行一次

特殊变量

NR: 表示记录数量(number of rows),在执行中对应于当前行号

NF: 表示字段数量(number of fields),在执行过程当中对应于当前行的字段数

$0: 表示执行过程当中,当前行的内容

$1: 第一个字段的文本内容

$2: 第二个字段的文本内容

-v选项将外部变量(非来自stdin)传递给awk

从文件传输变量

getline读取某一行

例如跳过第一行

指定样式

设置定界符

或者awk -F: '{print $NF}' /etc/passwd

经过getline读取外部命令输出到变量output

"command" | getline output

相关文章
相关标签/搜索