Това наистина се обяснява само по себе си. Работя в 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
jps
? освен това ви липсва отваряща скоба за$myips[@]}
- person Shawn Chin   schedule 03.08.2012for j in "${pids}"
трябва да бъдеfor j in ${pids[@]}
? - person Shawn Chin   schedule 03.08.2012$IFS
и това обърква остатъка от вашия скрипт, който използва$IFS
за разделяне на данните от колоната на елементи от масива. Вижте актуализирания отговор по-долу. - person Shawn Chin   schedule 03.08.2012