这真的不言自明。我在 bash shell 中工作,我对 shell 脚本很陌生。我找到了很多关于使用的信息tr
,sed
但是到目前为止我发现的所有示例都删除了分隔符和新行。我真的想做相反的事情。我希望能够根据空白进行分离。我有一个像“abcd efgh”这样的字符串,我需要它是“abcd”“efgh”(全部不带引号,只是为了显示分组)。
我敢肯定这比我做的要简单得多,但我很困惑。
更新的问题:
我有一列已放入数组的 PID,但数组的每个元素都有列中的 pid。
柱子:
1234
5678
当我打印出整个数组时,所有不同的列都已添加,因此我拥有所有值,但是当我打印出数组的单个元素时,我得到如下信息:
1234 5678
这不是我想要的。我需要一个用于 1234 的元素和一个用于 5678 的单独元素。
到目前为止,这是我的代码:
!/bin/bash
echo "Enter the File Name"
read ips
index=0
IFS=' '
while read myaddr myname; do
myips[$index]="$myaddr"
names[$index]="$myname"
index=$(($index+1))
done < $ips
echo "my IPs are: ${myips[*]}"
echo "the corresponding names are: ${names[*]}"
echo "Total IPs in the file: ${index}"
ind=0
for i in "$myips[@]}"
do
echo $i
pids=( $(jps | awk '{print $1}') )
for pid in "${pids[@]}"; do
echo $pid
done
echo "my PIDs are: ${pids}"
for j in "${pids[@]}"
do
mypids[$ind]="$j"
ind=$(($ind+1))
done
done
echo "${mypids[*]}"
echo "The 3rd PID is: ${mypids[2]}"
样品输出:
Total IPs in the file: 6
xxx.xxx.xxx.xxx
5504
1268
1
xxx.xxx.xxx.xxx
5504
4352
1
xxx.xxx.xxx.xxx
5504
4340
1
5504
1268 5504
4352 5504
4340
The 3rd pid is: 5504
4340
我需要将每个 pid 分开,以便数组的每个元素都是一个 pid。因此,例如,“The 3rd pid is:”行需要看起来像
The 3rd pid is: 5504
第 4 个元素是 4340