Shell awk将错误的变量打印到文件中 客观的

Shell awk将错误的变量打印到文件中 客观的,shell,awk,windows-subsystem-for-linux,Shell,Awk,Windows Subsystem For Linux,我试图将字段2中显示的日期分解为变量“年”和“月”,然后在末尾将其作为两个新字段打印回我的文件中。我有一个for循环,因为我正在对许多文件执行此操作,这些文件将在末尾被分类 问题 AWK在文件末尾为其中一个变量打印字段3,为另一个变量打印空白 文件-test.tsv 代码 电流输出 期望输出 我试过的 许多Google和大量的脚本修改,但我似乎无法正确地完成。基于我的变量“月”和“年”,我捕获了正确的输入,但awk命令中的某些内容没有正确地传递。任何指导都将不胜感激。只需一次调用awk即可: $

我试图将字段2中显示的日期分解为变量“年”和“月”,然后在末尾将其作为两个新字段打印回我的文件中。我有一个for循环,因为我正在对许多文件执行此操作,这些文件将在末尾被分类

问题 AWK在文件末尾为其中一个变量打印字段3,为另一个变量打印空白

文件-test.tsv 代码 电流输出 期望输出 我试过的
许多Google和大量的脚本修改,但我似乎无法正确地完成。基于我的变量“月”和“年”,我捕获了正确的输入,但awk命令中的某些内容没有正确地传递。任何指导都将不胜感激。

只需一次调用awk即可:

$ awk 'BEGIN{FS=OFS="\t"} {split($2,d,/-/); print $0, d[2], d[1]}' test.tsv
client  2020-03-15      platform        3096431 2686357 0.868   2544716 0.8220000000000001  2509205 0.8100000000000001      2046915 0.6609999999999999      0.189   0.053       0.0526  0       0.0001  0       0.013   0.009599999999999999    0       0.0031      0       0       0.0005999999999999999   0.37    0.0757  0       0.0365  0.2326      0.025   1238347 0.494   0.494   1270858 0.507   0       0       1       0.302       33      202.5   1270864 0.507   157387  0.063   357414  0.142   723540  0.288       03      2020

有关脚本中的一些(但不是全部)其他问题,请参见和。我强烈建议您运行通过
shellcheck编写的所有脚本(例如),直到您了解基本知识。

-d”“
-使用
-d$'\t'
。您提供的当前输出表明,
客户端
2020-03-15
之间没有选项卡,请检查。@KamilCuk感谢您提供关于如何以其他方式进行选项卡的建议。但是,这会导致以后的awk命令出现问题吗?
cut
default delim是一个选项卡,所以只需将其删除即可。实际上,放下它,使用下面@EdMorton的完整awk解决方案:D
$”\t
的含义相同
 ##note the tabs in the cut command are correct in my code but might end up as spaces in the post
    for f4 in $(find *.tsv);do
            name=$(echo $f4 | sed -Ee 's/-filename.tsv//')
            month=$(cat $f4 | cut -d "      " -f 2 | awk -F"-" -v OFS='-' '{print $2}')
            year=$(cat $f4 | cut -d "       " -f 2 | awk -F"-" -v OFS='-' '{print $1}')
            awk -v month="$month" -v year="$year" -F"\t" -v OFS='\t' '{print $0,  $month,   $year}' $f4 > $name-dates.tsv
            mv $f4 tsv
    done
client  2020-03-15  platform    3096431 2686357 0.868   2544716 0.8220000000000001  2509205 0.8100000000000001  2046915 0.6609999999999999  0.189   0.053   0.0526  0   0.0001  0   0.013   0.009599999999999999    0   0.0031  0   0   0.0005999999999999999   0.37    0.0757  0   0.0365  0.2326  0.025   1238347 0.494   0.494   1270858 0.507   0   0   1   0.302   33  202.5   1270864 0.507   157387  0.063   357414  0.142   723540  0.288   platform
client  2020-03-15  platform    3096431 2686357 0.868   2544716 0.8220000000000001  2509205 0.8100000000000001  2046915 0.6609999999999999  0.189   0.053   0.0526  0   0.0001  0   0.013   0.009599999999999999    0   0.0031  0   0   0.0005999999999999999   0.37    0.0757  0   0.0365  0.2326  0.025   1238347 0.494   0.494   1270858 0.507   0   0   1   0.302   33  202.5   1270864 0.507   157387  0.063   357414  0.142   723540  0.288   03  2020
$ awk 'BEGIN{FS=OFS="\t"} {split($2,d,/-/); print $0, d[2], d[1]}' test.tsv
client  2020-03-15      platform        3096431 2686357 0.868   2544716 0.8220000000000001  2509205 0.8100000000000001      2046915 0.6609999999999999      0.189   0.053       0.0526  0       0.0001  0       0.013   0.009599999999999999    0       0.0031      0       0       0.0005999999999999999   0.37    0.0757  0       0.0365  0.2326      0.025   1238347 0.494   0.494   1270858 0.507   0       0       1       0.302       33      202.5   1270864 0.507   157387  0.063   357414  0.142   723540  0.288       03      2020