Bash capturing output of awk into array
我陷入一个小问题。 我有一个将输出通过管道传输到awk的命令,但我想一个一个地捕获到阵列的输出。
我的例子:
1 | myarr=$(ps -u kdride | awk '{ print $1 }') |
但这会将我的所有输出捕获到一个用逗号分隔的巨型字符串中:
1 | output: PID 3856 5339 6483 10448 15313 15314 15315 15316 22348 29589 29593 32657 1 |
我还尝试了以下方法:
1 2 3 4 5 | IFS="," myarr=$(ps -u kdride | awk '{ print $1"," }') But the output is: PID, 3856, 5339, 6483, 10448, 15293, 15294, 15295, 15296, 22348, 29589, 29593, 32657, 1 |
我希望能够将每个pid捕获到其自己的数组元素中。 设置
'
添加其他括号,如下所示:
1 2 3 4 5 6 7 8 9 10 11 | myarr=($(ps -u kdride | awk '{ print $1 }')) # Now access elements of an array (change"1" to whatever you want) echo ${myarr[1]} # Or loop through every element in the array for i in"${myarr[@]}" do : echo $i done |
另请参见
使用Bash的内置映射文件(或其同义词
1 | mapfile -t -s 1 myarr < <(ps -u myusername | awk '{print $1}') |
至少在GNU / Linux中,您可以格式化
1 | mapfile -t myarr < <(ps -u myusername -o pid=) |