【发布时间】:2014-04-06 10:43:08
【问题描述】:
我正在开发一个 awk 单行代码,以将逗号替换为文件中的制表符(并用 \\N 交换缺失值,为 MySQL select into 做准备)。
以下链接http://www.unix.com/unix-for-dummies-questions-and-answers/211941-awk-output-field-separator.html(在底部)建议采用以下方法来避免循环遍历变量:
echo a b c d | awk '{gsub(OFS,";")}1'
head -n1 flatfile.tab | awk -F $'\t' '{for(j=1;j<=NF;j++){gsub(" +","\\N",$j)}gsub(OFS,",")}1'
显然,结尾的1(可以是数字、字符)触发了整个记录的打印。你能解释一下为什么这是有效的吗?
SO 也有 Print all Fields with AWK separated by OFS ,但在那篇文章中似乎不清楚为什么它会起作用。
谢谢。
【问题讨论】:
标签: awk