次の行(6行目)を見つけようとしています。
"password": "......."
line で始まるすべてのファイルから"whatever here": "...."
その後、記号の後に書かれた内容を抽出し、追加の単語と文字の両方を削除したいと思います:
。 "password": "" と引用符の間に ........ 部分を取得します。
後でこの変数を同じスクリプトの新しいコマンドに置き換えてURLを取得したいので、これを新しい変数(ここではuser1と命名しました)として定義したいと思います。
このコマンドを使用しましたが、動作しません。
user1=`head -6| grep -v "\<"password:"\>" myfile.txt`
wget '....$user1&......
誰でも私を助けることができますか?私はこれを数日間調べてきましたが、これはわかりません。
ベストアンサー1
努力する:
user1=$(
sed -n '
6!d; # disregard any line but the 6th one
s/^[[:blank:]]*"password"[[:blank:]]*:[[:blank:]]*"\(.*\)".*/\1/p
q' myfile.txt
)
CGI GETパラメータに渡すには、そのパラメータをエンコードする$user1
必要があります。%XX
を使用すると、ksh93
次のことができます。
wget "http://host.example/cgi-bin/script?user1=$(printf '%#H' "$user1")"
perl
他のシェルの場合は、URIエスケープを使用できます。
uri_escape() {
perl -MURI::Escape -le 'print map {uri_escape $_} @ARGV' -- "$@"
}
wget "http://host.example/cgi-bin/script?user1=$(uri_escape "$user1")"
または、curl
代わりにwhichを使用してパラメータwget
を直接エンコードします。
curl -G -O --data-urlencode "user1=$user1" 'http://host.example/cgi-bin/script'