如何在使用awk的最后一个字段之前向文本文件添加字段?

如何在使用awk的最后一个字段之前向文本文件添加字段?,awk,Awk,我有以下以空格分隔的文本文件: ra dec type 197.574288 -0.673779 coadd 201.236362 -1.007902 coadd 191.573312 5.039784 coadd 文件的标题为“ra”、“dec”和“type”。我想使用awk命令在最后一个字段之前添加一个具有常量值“I”的字段,并在最后一个字段之后添加一个具有常量值“pdr”的字段,如下所示: ra dec i type pdr 197.574288 -0.673779 i coadd pd

我有以下以空格分隔的文本文件:

ra dec type
197.574288 -0.673779 coadd
201.236362 -1.007902 coadd
191.573312 5.039784 coadd
文件的标题为“ra”、“dec”和“type”。我想使用awk命令在最后一个字段之前添加一个具有常量值“I”的字段,并在最后一个字段之后添加一个具有常量值“pdr”的字段,如下所示:

ra dec i type pdr
197.574288 -0.673779 i coadd pdr
201.236362 -1.007902 i coadd pdr
191.573312 5.039784 i coadd pdr

ra dec i type pdr
197.574288 -0.673779 i coadd pdr
201.236362 -1.007902 i coadd pdr
191.573312 5.039784 i coadd pdr
到目前为止,我已经尝试了许多不同的命令,例如

awk '{printf("i %s pdr2_wide\n",$3,$5)}' psffile.txt > psf50.txt
awk '{printf($1,$2,$3,"i %s pdr2_wide\n",$4,$5)}' psffile.txt > psf50.txt
awk -F '\ ' -v OFS='\ ' '{ $(NF-1) = i; print }' psffile.txt > psf50.txt <br />
有办法解决这个问题吗

awk '{ print $1,$2,"i",$3,"pdr" }' input
输出:

输出:

当您想在末尾附近添加字段时,您可以这样做,对于任何字段编号,末尾的
1
意味着打印每一行


由于您希望在末尾附近添加字段,您可以这样做,对于任何字段编号,结尾处的
1
也意味着打印每一行。

请显示所需结果的示例。欢迎使用SO,特别感谢您在问题中添加您的努力(请继续)。请在您的问题中添加输出样本,使问题更加清晰。我道歉!我添加了期望的结果。请展示一个期望结果的示例。欢迎使用SO,特别感谢您在问题中添加了您的努力(请继续)。请在您的问题中添加输出样本,使问题更加清晰。我道歉!我添加了期望的结果。嗨,谢谢你的回复。此命令使每行的“pdr”位于“ra”编号之下。我已编辑了我的问题,以便您可以查看此输出文件。我不知道它为什么这样做。这一定是因为不同的行尾。通常在unix(或linix)线路上,en带有一个CR(回车符),在Windows线路上,结束于CRLF(回车符+换行符),而MacOS则做其他事情。。。我假设CR是行尾字符。@Luuk:Unix/Linux/mac OS使用换行符(十六进制0a),而经典mac OS只使用回车符(十六进制0d)。您好,谢谢您的回复。此命令使每行的“pdr”位于“ra”编号之下。我已编辑了我的问题,以便您可以查看此输出文件。我不知道它为什么这样做。这一定是因为不同的行尾。通常在unix(或linix)线路上,en带有一个CR(回车符),在Windows线路上,结束于CRLF(回车符+换行符),而MacOS则做其他事情。。。我假设CR是行尾字符。@Luuk:Unix/Linux/mac OS使用换行符(十六进制0a),而经典mac OS只使用回车符(十六进制0d)。谢谢。这给了我与上面建议相同的格式问题,即“pdr”字段每行输入一个新行。我已编辑了我的问题,以显示此输出文件的外观。可能您在行尾有特殊字符,如\r或^M。您与dos/windows有任何关系吗?在编写脚本之前,请尝试
dos2unix文件>新建\u文件
。谢谢。这给了我与上面建议相同的格式问题,即“pdr”字段每行输入一个新行。我已编辑了我的问题,以显示此输出文件的外观。可能您在行尾有特殊字符,如\r或^M。您与dos/windows有任何关系吗?在脚本之前尝试
dos2unix文件>新建_文件
ra dec i type pdr
197.574288 -0.673779 i coadd pdr
201.236362 -1.007902 i coadd pdr
191.573312 5.039784 i coadd pdr
awk '{$NF= "i" FS $NF FS "pdr"}1' file