在awk中,至少在gawk中,字段分隔符FS是空格(制表符或空格),这是合理的。但是,默认情况下,输出字段分隔符OFS设置为空格。我希望是tab,因为tab更适合作为UNIX文本文件中的列分隔符,而不是空格(根据我的经验)。让它成为一个空间背后的理由是什么?
发布于 2011-09-21 20:48:39
带Tab键的文本在不同的文本编辑器中看起来可能不同。因为他们中的许多人都有“如何解释制表符”的选项,例如4个空格,8个空格等,但带空格的文本看起来到处都是一样的。
此外,一些对缩进敏感的编程语言建议使用空格而不是制表符,例如here。从你的角度来看,这个建议可能也不合理。
如果您希望将空格作为OFS默认值,则可以创建一个别名,例如myawk=awk -v OFS='\t'
发布于 2011-09-21 20:42:37
awk编程语言可能比您对当今任何事实上的Unix标准的直觉都要古老。
话虽如此,默认是非常有意义的,原因与人们反对在源文件中使用制表符进行缩进时经常引用的原因大致相同。
发布于 2012-12-09 06:05:48
在@Kent脚本的基础上,下面是我在输入(F-parmeter)和输出(OFS-parameter)中处理csv和tsv的别名:
# alias to use awk on csv-files
alias awkt='awk -F"\t" -v OFS="\t"'
# alias to use awk on tsv-files
alias awkc='awk -F"," -v OFS=","'https://stackoverflow.com/questions/7499791
复制相似问题