Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 为什么“awk”打印for循环的所有元素,但却可以';你不能将它们全部导出到剪贴板吗?_Bash_Awk_Clipboard - Fatal编程技术网

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")}}'