在以下情况下,awk失败的原因是什么?

时间:2015-04-22 03:48:09

标签: unix awk ksh

我在shell脚本中使用了以下命令

awk '{print $0","}' file1.txt > file2.txt

结果是创建了file2.txt,但在每行的末尾没有','。并且在awk行停止了shell脚本执行。我没有看到它失败的原因。有人可以解释awk的这种行为吗?

1 个答案:

答案 0 :(得分:2)

  

...它没有添加','最后,但它用'替换了每一行的第一个字符,'

您的文件中有DOS / Windows样式的行结尾(回车符,换行符)。因此,awk在回车后放置逗号,但在换行符之前。考虑使用DOS-line-endings的这个文件:

$ cat file1.dos
line one
line two
line three

如果我们运行awk命令,结果如下:

$ awk '{print $0","}' file1.dos
,ine one
,ine two
,ine three

使用dos2unix或tr删除DOS行结尾。例如:

$ tr -d '\r' <file1.dos >file1

现在,它将正常工作:

$ awk '{print $0","}' file1
line one,
line two,
line three,