给出一些像这样的数据:
"Something something","1234567890123456","12/34/5678","Other thing","123",""
我尝试让awk
打印字段,然后使用X
将其导出到xclip
剪贴板,其中包含以下内容:
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
但它似乎只将最后一个字段复制到剪贴板。我正在使用剪贴板管理器(klipper
),所以我希望列出所有字段。
我错过了什么?
答案 0 :(得分:0)
如果您尝试使用每个值之间的换行符将字段复制到剪贴板,请考虑以下事项:
awk -F',' '
{ s=$1; for (i=2;i<NF;i++) {s=s "\n"$i; }
print s;
system("echo \"" s "\" | xcopy -i");
}'
答案 1 :(得分:0)
这根本不是awk
问题。显然,xclip
无法处理其接收输入的速度。同样,for i in {1..3}; do echo $i | xclip -i; done
以同样的方式失败。在调用sleep
后添加xclip
将解决问题。根据我的实验,每个项目需要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")}}'