私はbashスクリプトに慣れていないので、とても簡単だと思います。 URLを実行し、curl
特定のIDを使用して出力を解析し、grep
それをテキストファイルに追加するスクリプトを作成しました。テキストファイルに追加すると、IDはスペースで区切られます。
#!/bin/bash
IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")
echo ${IDS} >> "ids"
sed 's/ /\n/g' "ids"
ところで、実行してみるとファイルの出力が端末に書き込まれることがわかりますが、最後の行( sed
)を削除すると出力が消えます。以前使ってみましたが、tr
同じ現象がありました。これが起こらないようにするにはどうすればよいですか?
答え1
sed
指定した代替コンテンツを使用してファイルが印刷されています。
より良いアイデアは次のとおりです。
#!/bin/bash
IDS=$(curl -v --silent "http://example.com" 2>&1 | grep -Eo 'data-user_id="[0-9]+"' | grep -Eo "[0-9]+")
echo "$IDS" | tr ' ' '\n' >> "ids"
$IDS
ファイルに追加する前に、改行翻訳にスペースをエコーして適用します。
答え2
パールで試してください
IDS=$(curl -sv http://example.com |& perl -lne 'print $1 if /data-user_id="(\d+)"/')