sed
擅长取行,awk
命令擅长取列
sed
-
格式:
sed <option> <script> <file>
-
option
-e
: 执行多个命令- 命令之间必须用分号隔开
- 命令末尾和分号之间不能有空格
- 例子:
sed -e 's/brown/green; s/dog/cat' data.txt
-f
: 从文件读取命令- 每个命令一行,无需分号
- 例子:
sed -f script.sed data.txt
-n
:不产生命令输出,用print命令完成输出
-
script
- **s **: 用第二个斜线间的字符串替换第一个斜线间的字符串
- 例子:
echo "a dog" | sed 's/dog/cat/'
- 例子:
- **s **: 用第二个斜线间的字符串替换第一个斜线间的字符串
-
file
- 不指定则默认为STDIN
-
sed不会修改文件数据,而是把修改后的数据发送到STDOUT
awk
-
格式:
awk <options> <program> <file>
-
option
-f
: 从文件读取命令- 必须以
{}
开头结尾 - 每个命令一行,无需分号
- 必须以
-F
: 自定义字段分隔符- 默认分隔符是空白符
- 例子:
awk -F: '{print $1}' /etc/passwd
-
program
- 可以自定义变量
- 引用自定义变量时不需要
$
- 默认变量
$0
代表整个文本行$1
代表第1个数据字段$n
代表第n个数据字段
- 引用自定义变量时不需要
- 关键字
BEGIN
:在处理数据前执行后面定义的脚本- 两段命令仍需在同一单引号内
- 例子:
awk 'BEGIN {print "hello world!"} {print $0}'
END
:在处理数据后执行后面定义的脚本
- 在命令之间加分号可以执行多个命令
- 例子:
echo "Hello World" | awk '{$2="golang"; print $0}'
- 例子:
- 可以自定义变量
-
file
- 不指定则默认为STDIN
正则表达式