我现在想使用awk来重新排列.csv文件类似于下面的打印领域:我如何可以提供bash的变量在awk中
stack,over,flow,dot,com
,输出将是:
over,com,stack,flow,dot
(或任何其他命令,只是用这个作为一个例子)
,当谈到时间重新排列csv文件,我一直在尝试使用以下命令:
first='$2'
second='$5'
third='$1'
fourth='$3'
fifth='$4'
awk -v a=$first -v b=$second -v c=$third -v d=$fourth -v e=$fifth -F '^|,|$' '{print $a,$b,$c,$d,$e}' somefile.csv
使用awk /打印解释$ A,$ B,$ c等为外地号码的意图,所以它出来以下几点:
{print $2,$5,$1,$3,$4}
,并打印出的字段的顺序csv文件,但不幸的是,我还没有能够得到这个工作正常。我尝试了几种不同的方法,这看起来像最有前途的,但不幸的是还没有能够得到任何解决方案,以正常工作。话虽如此,我想知道是否有人可以提出任何建议或指出我的缺陷,因为我在这个时候难倒了,任何帮助都将非常感谢,谢谢!
完美运作,谢谢!并作为一种标签问题,我怎么会得到打印的输出为逗号分隔,因为现在输出被空格分隔“over com stack flow dot” – lacrosse1991
OFS =“,”(输出字段分隔符)应该在BEGIN子句中或'every row'语句中(或在命令行中)执行。 –
也按预期工作,再次感谢! – lacrosse1991