我试图将字段2中显示的日期分解为变量“年和月”,然后将其作为最后两个新字段打印回到我的文件中。我有一个for循环,因为我有很多文件这样做,最后将得到解决。
AWK在文件末尾为变量之一输出字段3,为另一个变量输出空白。
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
##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
许多谷歌和大量的脚本重做,但我似乎无法正确。基于我的变量“ month”和“ year”,我捕获了正确的输入,但是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
另请参阅why-is-looping-over-finds-output-bad-practice,https://mywiki.wooledge.org/Quotes和http://porkmail.org/era/unix/award.html的部分内容(但并非所有)脚本中的其他其他问题。我强烈建议您运行所有编写的脚本shellcheck
(例如https://www.shellcheck.net/),直到您了解基本知识为止。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句