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
正则表达式
来源:CSDN
作者:_萤火
链接:https://blog.csdn.net/winter_wu_1998/article/details/104089802