私はnslookup -q=srv SOME_ADDRESS
返されたアドレスを配列に使用して保存したいと思います。nslookup
返品:
Server: 123.456.789.123
Address: 123.456.789.123#12
SOME_ADDRESS service = 0 0 1234 address-1.i.want.
SOME_ADDRESS service = 0 0 1234 address-2.i.want.
SOME_ADDRESS service = 0 0 1234 address-3.i.want.
私はまだ正規表現を学んでおり、文字列を配列に入れます。
array=($(nslookup -q=srv SOME_ADDRESS | grep -o ' [a-z0-9.-]*[a-z0-9].$'))
これは私に空きスペースを与えます[ ]address-3.i.want.
。[ ]
adress-3.i.want
.
先頭または末尾にスペースがない場合、どのように一致させますか? (結果の文字列から文字を削除する代わりに正規表現を使用してください。他の文字列を追加またはgrep
パイプcut
する方法を知っていますが、正規表現を編集して目的の操作を実行できることを確認してください。)
ベストアンサー1
GNUで操作を実行できます。sed
nslookup -q=srv "${SOME_ADDRESS}" |
sed -n '/\.$/s///;T;/.* /s///p' |
mapfile -t array
存在するsed
-n
デフォルトでは、行は印刷されません。/\.$/s///
行末の「.」を削除します。T
最後に移動(上記の内容がない場合は何も印刷されないことを意味)/.* /s///p
印刷物が残るまですべて削除
または非GNU
sed -n '/ /s//\n/;/\n/D;s/\.$//p'
/ /s//\n/
n
代わりにewlineを使用してください/\n/D
ewlineまですべて削除n
して最初から始めるs/\.$//p
「.」を削除すると、行末に残りの内容が印刷されます。