Knowledge Base

お知らせや身辺のことを綴っています。
目次
4月9日(火) シェルスクリプトであそぼう

4月9日(火) シェルスクリプトであそぼう

今日の雨は土砂降りというレベルですごかった。AtCoder Problemsでの難易度が150~300くらいの問題を10問くらいACで通して、メモを残す作業をしていたら疲れ果ててしまった。弱い。

シェルスクリプトであそぼう

さて、シェルスクリプトで、サイト側で001, 002のようなパディング付きの連番をパス構造として持っているURLのPDFファイルを一括で落としたくて、以下のようなシェルスクリプトを組んだので紹介する。

seq 10 \
| while read x; do \
    printf '%03d\n' $x; \
  done \
| xargs -I{} curl -o {}.pdf https://www.example.com/{}/target.pdf

一応イメージしやすくするために、このシェルスクリプトを使って落とすURLはこんな感じだよ、という注釈をつけておく。seqで1始まりの連番を10まで生成して、その出力を一行ずつ読み取ってprintfでフォーマットをかけたものを、最終的にxargsに通して複数の引数に展開している。xargsは今回Pythonのzip()関数みたいな使い方をしていて、データの行と列を入れ替えるような動作をしている。

https://www.example.com/001/target.pdf
https://www.example.com/002/target.pdf
https://www.example.com/003/target.pdf
...

シェルスクリプトで連番を叩くときはできるだけシェルの機能に依存しないようにしたい。

さて、寝ます。

前の記事

4月8日(月) 日記

次の記事

4月10日(水) スパムコメントで学ぶ英語のイディオム

コメント

0

コメントはありません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連投稿

日記
「Podmanで同一ネットワーク内の他のコンテナのドメイン名を解決できるようにする」のサムネイル画像

Podmanで同一ネットワーク内の他のコンテナのドメイン名を解決できるようにする

Podmanで、ネットワークスタックをNetavarkに変更して、同一ネットワーク内の他のコンテナのドメイン名を解決できるようにします。 続きを読む

日記
「yokkin.comの運用環境を移行した」のサムネイル画像

yokkin.comの運用環境を移行した

yokkin.comの運用環境を移行したので、その理由やセットアップ作業の詳細について説明している記事です。 続きを読む

日記
「6月を振り返ってみる」のサムネイル画像

6月を振り返ってみる

2024年6月にあったことを振り返る記事です。 続きを読む

日記
「検索エンジンのBotについて考える」のサムネイル画像

検索エンジンのBotについて考える

このサイトに訪れているクローラの種類と数を集計して、ダウンタイムの謎を暴きます。 続きを読む