githubページからSSH URL情報を抽出するために、sed、awk、curの相互作用を理解します。

githubページからSSH URL情報を抽出するために、sed、awk、curの相互作用を理解します。

ユーザーのGitHubアカウントにあるすべてのパブリックリポジトリをインポートする必要があります。そのためにAPI出力を取得しました。https://api.github.com/users/SOMEUSER/repos

これが私が思いついたものです。ファイルからssh_url行を抽出するには、次のようにします。

sed -n '/ssh_url/p' SOMEFILE

これでリポジトリのSSH URLだけが残り、その周囲には引用符があります。今私はそれを見つけました:

awk -F\" '{print $(NF-1)}' 

それからそれらを一つにまとめました。

curl https://api.github.com/users/SOMEUSER/repos | sed -n '/ssh_url/p' | awk -F\" '{print $(NF-1)}' | xargs -n1 git clone

今仕事をしているのでいいですね。なぜ動作しますか?

ベストアンサー1

sed -n '/ssh_url/p'

文字列を含むすべての行を印刷しますssh_url。これはsed一般的な用途ではありません。これは次の方法で行うことができますgrepawk直接awk使用することもできます)。

grep ssh_url

awk -F\" '/ssh_url/ {print $(NF-1)}'

-F\"awk文字で区切られた行の内容を示します"NFフィールド数。つまり、NF-1 "行に文字があります。print $(NF-1)最後のフィールドを印刷します。行がある場合は印刷foo"bar"bazしてくださいbar

おすすめ記事