sed 和 awk简单命令
什么是sed 和 awk
sed是一个Unix实用程序,它使用简单紧凑的编程语言解析和转换文本。 sed由贝尔实验室的Lee E. McMahon于1973年至1974年开发,现在可用于大多数操作系统。 sed是最早支持正则表达式的工具之一,并且仍然用于文本处理,尤其是替换命令。 用于明文字符串操作和“流编辑”的流行替代工具包括AWK和Perl.
AWK是一种专门用于文本处理的领域专用语言,通常用作数据提取和报告工具。 它是大多数类Unix操作系统的标准功能。
AWK语言是一种数据驱动的脚本语言,包含一组针对文本数据流的操作 - 直接在文件上运行或用作管道的一部分 - 用于提取或转换文本,例如生成格式报告。 该语言广泛使用字符串数据类型,关联数组(即由键字符串索引的数组)和正则表达式。 虽然AWK的应用领域有限,并且专门用于支持单线程序,但该语言是图灵完备的,甚至AWK的早期贝尔实验室用户也经常编写结构良好的大型AWK程序
sed命令简介
基本命令格式如下所示:
sed [-e] 'instruction' file
当你需要输入多条指令时, 需要用到-e选项, 它告诉sed解析器下一个参数是个指令。下面是几个简单示例。
- 替换test.txt里面的所有YES为NO
sed 's/YES/NO/' test.txt
- 用中括号来分开多条指令,如下所示
sed 's/YES/NO/; s/apple/orange' test.txt
- 也可以用多个-e来实现同样的功能
sed -e 's/YES/NO/' -e 's/apple/orange' test.txt
-你可以用-f指定一个脚本文件
sed -f scriptfile file
awk命令简介
基本命令格式如下所示:
awk 'instructions' files
和sed一样,你可以用-f指定一个脚本文件
awk -f script files
- 打印第一列,“$ 1”表示每个输入行上第一个字段的值。 由于未指定模式,因此print语句将应用于所有行。
awk '{ print $1 }' list
- 可以用-F来指定一个不同的分隔符,如下所示例子改为为,做为分隔符
awk -F, '/MA/ { print $1 }' list