Linux Awk-如何控制输出delimeter

Linux Awk-如何控制输出delimeter,linux,awk,delimiter,Linux,Awk,Delimiter,我正在运行以下awk命令,将输入文件的第1列和第15列投影到输出。当输出文件用空格键写入时,问题就开始了 awk -F "|" '{print $1,$15}' 1st_rm_text_from_transactions_22_7_14.plt > manual_memos_text_from_transactions_22_7_14.plt 如何控制输出文件中的去离子计(我需要|) 谢谢您可以使用输出分隔符变量OFS来控制它 awk -F "|" '{OFS="|"; pri

我正在运行以下awk命令,将输入文件的第1列和第15列投影到输出。当输出文件用空格键写入时,问题就开始了

     awk -F "|" '{print $1,$15}' 1st_rm_text_from_transactions_22_7_14.plt > manual_memos_text_from_transactions_22_7_14.plt
如何控制输出文件中的去离子计(我需要|)


谢谢

您可以使用输出分隔符变量OFS来控制它

awk -F "|" '{OFS="|"; print $1,$15}' 1st_rm_text_from_transactions_22_7_14.plt > manual_memos_text_from_transactions_22_7_14.plt
更好的方法是添加begin部分,以避免在每行设置变量(如其他答案和注释中所建议的):


请参见

在print语句中使用
FS
而不是逗号

awk -F"|" '{print $1FS$15}' infile > outfile


举个例子会更好。您想要
|
作为输出字段分隔符吗?你的输入字段分隔符是什么?很好。在这种情况下,您还可以使用
BEGIN{FS=OFS=“|”}
。现在我看到,您正在设置
OFS
每一行。这不是很理想。。。它应该在
BEGIN{}
块中,就像我前面说的,或者作为一个参数(肯特建议的方式)。是的,我知道,我想要一个简单的解决方案,没有太多的附加。我将修改我的答案以添加开始部分。请注意:在一个有40k行的文件中,这两行几乎没有区别。很有趣!我会说这会大大降低性能。好的。
awk -F"|" '{print $1FS$15}' infile > outfile
awk -F "|" -v OFS="|" '...code..'
awk 'BEGIN{FS=OFS="|"}{code...}'