我在awk中遇到了非常奇怪的行为。
输入文件如下:
ABCD Yes
EFGH Yes
我的awk脚本如下:
/^ / {
print "ss", $2, "dd\n"
}
我期待的是:
ss Yes dd
ss Yes dd
但令人惊讶的是,结果如下:
ddYes
ddYes
我的" ss"以及如何附加在" dd"?
的背面答案 0 :(得分:3)
输入文件有DOS换行符。每行末尾的\r
字符作为$2
的一部分输出,并将插入点重置为行的开头,此时,
和{{1}的空格然后打印出来覆盖初始dd
。 (您可以修改ss
前缀或ss
后缀长度,以便更清楚地看到这一点。)
从原始文件中删除它们,这将消失。
答案 1 :(得分:-1)
awk '{print "ss", $2, "dd\n"}' f2
f2
是输入文件,它对我来说很好