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