我无休止地搜索,找不到任何可以解决看似简单问题的事情。
我有以下行读取csv文件并只使用这些字段来创建新字符串。
输入是一组简单的2列整数:
1234,1
5678,2
1357,5
2468,4
每个的预期输出应该是"评级应该是1,id应该是1234"对于每一行。
awk -F "," '{print "rating should be "$2" and id should be "$1}' $1 >> $FILENAME
但这是我得到的输出:
and id should be 635277
and id should be 29894
and id should be 576076
我认为这是最简单的字符串连接的情况,但我对awk来说是全新的,所以我很可能会遗漏一些明显的东西。如何才能打印出我想要的字符串?
答案 0 :(得分:2)
建议使用printf打印引用的字符串,这些字符串是POSIX
兼容的,并且可以跨平台使用。
awk -F"," '{printf "rating should be %d and id should be %s\n", $2,$1}' input-file
rating should be 1 and id should be 1234
rating should be 2 and id should be 5678
rating should be 5 and id should be 1357
rating should be 4 and id should be 2468
从print
示例中修复未终止的双引号字符串,为我解决了问题
awk -F "," '{print "rating should be "$2" and id should be "$1""}' input-file
rating should be 1 and id should be 1234
rating should be 2 and id should be 5678
rating should be 5 and id should be 1357
rating should be 4 and id should be 2468
答案 1 :(得分:1)
这个问题与你的awk脚本没什么关系。您的输入文件包含control-Ms,使用dos2unix或类似内容删除它们。