Pau*_*ce. 535
sed是一个流编辑器.它适用于每行的字符流.它有一个原始的编程语言,包括goto风格的循环和简单的条件(除了模式匹配和地址匹配).基本上只有两个"变量":模式空间和保持空间.脚本的可读性可能很难.数学运算充其量只是非常尴尬.
有各种版本,sed对命令行选项和语言功能提供不同级别的支持.
awk以每行为基础定向分隔字段.它具有更强大的编程构造包括if/ else,while,do/ while和for(C-风格和阵列迭代).完全支持变量和单维关联数组加上(IMO)kludgey多维数组.数学运算类似于C语言.它具有printf功能."AWK"中的" K "代表" K ernighan",如"C Programming Language"一书中的"Kernighan and Ritchie"(不要忘记A ho和W einberger).人们可以想象用一种学术抄袭的探测器awk.
GNU awk(gawk)有许多扩展,包括最新版本中的真正多维数组.awk包括mawk和的其他变体nawk.
两个程序都使用正则表达式来选择和处理文本.
我倾向于使用sed文本中有模式的地方.例如,您可以使用"会计师的括号"形式替换某些文本中"减号后跟一个数字序列"(例如"-231.45")的所有负数(例如"(231.45)") )使用它(有改进的余地):
sed 's/-\([0-9.]\+\)/(\1)/g' inputfile
Run Code Online (Sandbox Code Playgroud)
我会awk在文本看起来更像行和列时使用,或者awk将它们称为"记录"和"字段".如果我要执行与上面类似的操作,但仅在一个简单的逗号分隔文件中的第三个字段上,我可能会执行以下操作:
awk -F, 'BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}' inputfile
Run Code Online (Sandbox Code Playgroud)
当然,这些只是非常简单的例子,没有说明每个人提供的全部功能.
gho*_*g74 119
1)awk和sed有什么区别?
两者都是改变文本的工具.但是除了操作文本之外,awk可以做更多的事情.它本身就是一种编程语言,你在编程中学到了很多东西,比如数组,循环,if/else流控制等你也可以在sed中"编程",但是你不想维护写在其中的代码.
2)什么样的应用程序是sed和awk工具的最佳用例?
结论:使用sed进行非常简单的文本解析.除此之外,awk更好.事实上,你可以完全抛弃sed并使用awk.由于它们的功能重叠而awk可以做得更多,所以只需使用awk即可.您也将减少学习曲线.
hek*_*mgl 48
这两个工具都适用于文本,并且有两个工具都可以使用.
对我来说,将它们分开的规则是:sed用于自动执行在文本编辑器中手动执行的任务.这就是它被称为流编辑器的原因.(您可以使用相同的命令编辑vim中的文本).使用awk,如果你要分析文本,这意味着计数领域,计算总计,提取和重新组织结构等等.
你也不应该忘记grep.使用grep,如果你只想搜索/文本(文件)中提取的东西