微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在shell脚本中recursion地使用粘贴命令

我在我的脚本中有一个粘贴命令。 但是这并没有给我想要的结果。 我的数据文件

file.txt 1 3 5 4

我的shell脚本是

f1=file.txt for j in 1..12 do awk '{printf ("%.1fn",$1+'$j');}' $f1 > $j_$f1 paste $j_$f1 > ofile.txt # ofile.txt is a new empty file done

这个脚本给出输出

ofile.txt 2 4 6 5 3 5 7 6 . .

我希望的输出

背景工具复制和粘贴

将两个文本列表(一个列表文件)粘贴到一个由逗号分隔的列表中

如何在Linux粘贴命令的结果中插入自定义string

如何使用C#将CSV数据粘贴到Windows剪贴板

Linux粘贴命令的标准input

ofile.txt 2 3 4 5 6 ... 13 4 5 6 7 8 ... 15 6 7 8 9 10 .. 17 5 6 7 8 9 ... 16

我也想为下面的脚本做

bonus_company1=10 bonus_company2=25 bonus_company3=50 declare var=("company1" "company2" "company3") for k in var{[@]} do for j in jan..dec do if [ $j == "jan" ] || [ $j == "may" ] || [ $j == "sep" ]; then awk '{printf ("%.1fn",$1+ '$bonus_$k');}' $f1 > $k_$j_$f1 elif [ $j -ne "jan" ] && [ $j -ne "may" ] && [ $j -ne "sep" ]; then awk '{printf ("%.1fn",$1+5);}' $f1 > $k_$j_$f1 fi paste $k_$j_$f1 > $k.txt # $k.txt is a new empty file done done

所以我会为三家公司获得3个不同的文件。 例如

company1.txt 11 6 6 6 11 ..... 13 8 8 8 11 ..... 15 10 10 10 15 ..... 14 9 9 9 14 .....

在C#中复制剪切

在Windows剪贴板复制缓冲区中包含格式化信息以粘贴到Excel中

Windows如何处理与Xming的剪贴板接口?

bash将列切成一个文件并保存到另一个文件的末尾

Linux的 – 如何从一个文件剪切一列,并粘贴到另一个单行命令?

我建议在awk中做整个事情,而不是使用shell循环:

awk '{for (i=1; i<=12; ++i) printf "%d%s",$1+i,(i<12?FS:RS)}' "$f1" > output

此循环针对文件的每一行运行,并输出所有列,从而不需要使用其他工具(例如paste 。 三元运算符用于输出每行之间的空格( FS )和行尾的换行符( RS )。

对于你的问题的第二部分,你仍然可以在awk中完成大部分的工作。

declare -A companies companies=( [company1]=10 [company2]=25 [company3]=50 ) for c in "${companies[@]}"; do awk -v bonus="${companies[c]}" '{for (i=1; i<=12; ++i) printf "%d%s",$i+(i==1||i==5||i==9?bonus:5),(i<12?FS:RS)}' "$f1" > "$c.txt" done

我创建了一个包含每个公司名称和奖金的关联数组。 循环遍历数组中的每个公司,将奖金作为变量传递给awk(请注意,我正在使用-v而不是使用字符串连接)。 循环从1到12,在第1,5和9个月加上奖金,否则加上5。 公司的名称(shell数组的关键字)用于输出文件

我不明白,你为什么要这么复杂。 你可以用更简单的方法做到这一点:

第二个:

for k in var{[@]} do awk '{printf("%.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1f %.1fn",$1+"$bonus_$k",$1+5,$1+5);}' file.txt > $k_file.txt done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐