ユーザーの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
一般的な用途ではありません。これは次の方法で行うことができますgrep
(awk
直接awk
使用することもできます)。
grep ssh_url
awk -F\" '/ssh_url/ {print $(NF-1)}'
-F\"
awk
文字で区切られた行の内容を示します"
。NF
フィールド数。つまり、NF-1
"
行に文字があります。print $(NF-1)
最後のフィールドを印刷します。行がある場合は印刷foo"bar"baz
してくださいbar
。