Bash 为什么“awk”打印for循环的所有元素,但却可以';你不能将它们全部导出到剪贴板吗?
鉴于一些数据如下:Bash 为什么“awk”打印for循环的所有元素,但却可以';你不能将它们全部导出到剪贴板吗?,bash,awk,clipboard,Bash,Awk,Clipboard,鉴于一些数据如下: "Something something","1234567890123456","12/34/5678","Other thing","123","" 我正试图让awk打印这些字段,然后使用xclip将它们导出到X剪贴板,如下所示: echo $data | sed 's/"//g' | awk -F',' '{for(i=1;i<NF;i++) {print $i; system("echo \"" $i "\" | xclip -i")}}' 但它似乎只将最后
"Something something","1234567890123456","12/34/5678","Other thing","123",""
我正试图让awk
打印这些字段,然后使用xclip
将它们导出到X
剪贴板,如下所示:
echo $data | sed 's/"//g' | awk -F',' '{for(i=1;i<NF;i++) {print $i; system("echo \"" $i "\" | xclip -i")}}'
但它似乎只将最后一个字段复制到剪贴板。我使用的是剪贴板管理器(klipper
),因此我希望列出所有字段
我错过了什么?
如果你尝试用每个值之间的换行将字段复制到剪贴板,那么考虑这个:awk -F',' '
{ s=$1; for (i=2;i<NF;i++) {s=s "\n"$i; }
print s;
system("echo \"" s "\" | xcopy -i");
}'
awk-F',“
{s=$1;for(i=2;i这根本不是一个awk
问题。显然,xclip
无法处理其接收输入的速度。类似地,for i in{1..3};do echo$i | xclip-i;done
以同样的方式失败。在调用xclip
后添加sleep
将解决问题。根据我的实验,每个项目需要0.1秒,因此对于显示的6个字段,您需要:
echo $data | sed 's/"//g' | awk -F',' '{for(i=1;i<NF;i++) {print $i; system("echo \"" $i "\" | xclip -i; sleep 0.6")}}'
echo$data | sed's/“//g'| awk-F',”{for(i=1;i您正在为每行输入运行xclip-i
一次。是xclip-i
增量运行还是每次运行都会替换剪贴板内容?您的意思是|xclip-i
对awk
的输出执行?您的awk命令将不会运行。for loop
语法错误(对于i=1;i您的awk脚本中有几个问题与xclip问题无关。如果您要使用awk,请阅读Arnold Robbins的《有效的awk编程》第四版。@wxl它应该是(i=1;i使用剪贴板管理器,我可以复制某些内容,复制其他内容,复制第三个内容,它们都在剪贴板管理器上,最后一个内容是活动粘贴。因此,我需要的不是将单个副本中以新行分隔的文本复制到剪贴板,而是单独的文本。
echo $data | sed 's/"//g' | awk -F',' '{for(i=1;i<NF;i++) {print $i; system("echo \"" $i "\" | xclip -i; sleep 0.6")}}'