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