これは本当に自明です。私はbashシェルで作業していて、シェルスクリプトを初めて使用します。使用に関する多くの情報を見つけましたが、これまでtr
にsed
見つけたすべての例では、区切り文字と新しい行を削除しています。私は本当にその反対をしたいです。余白で分けられるようにしたいと思います。「abcdefgh」のような文字列があり、「abcd」「efgh」である必要があります(グループ化を示すために、すべて引用符なしで)。
これは私が作っているよりもはるかに簡単だと確信していますが、私は非常に混乱しています。
更新された質問:
配列に入れたPIDの列がありますが、配列の各要素の列には両方のpidがあります。
桁:
1234
5678
配列全体を印刷すると、すべての異なる列が追加されたため、すべての値が得られますが、配列の1つの要素を印刷すると、次のようになります。
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を分離する必要があります。たとえば、「3番目のpidは次のとおりです」という行は次のようになります。
The 3rd pid is: 5504
4番目の要素は4340になります