我在shell脚本中使用了以下命令
awk '{print $0","}' file1.txt > file2.txt
结果是创建了file2.txt,但在每行的末尾没有','
。并且在awk行停止了shell脚本执行。我没有看到它失败的原因。有人可以解释awk的这种行为吗?
答案 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,