sed 出力を open コマンドに渡す

sed 出力を open コマンドに渡す

オフラインGoogleドキュメントを開く機能を設定しようとしています。問題は、Googleドライブアプリがファイルを開き、必要なURLをデフォルトのブラウザに渡すため、Chromeがデフォルトのブラウザの場合はFinderを介してのみ機能することです。オフラインドキュメントはSafariで開かれないため、デフォルトのブラウザを変更するか(いいえ!)、ファイルが正しく開くようにSafariに提供されているURLをコピーしてChromeに貼り付ける必要があります。

オフラインのGoogleドキュメント/シートに対してcatを実行すると、次の出力が返されます。

{"url": "https://docs.google.com/open?id=31234123fdasdfsg412341", "doc_id":"31234123fdasdfsg412341", "email": "[email protected]", "resource_id": "document:31234123fdasdfsg412341"}

sedを使用してhttps部分を抽出しました。

sed 's/.*\(https[^"]*\)".*/\1/' myfile.gsheet

例えば、

echo '{"url": "https://docs.google.com/open?id=31234123fdasdfsg412341", "doc_id": "31234123fdasdfsg412341", "email": "[email protected]", "resource_id": "document:31234123fdasdfsg412341"}' | sed 's/.*\(https[^"]*\)".*/\1/'

ただし、Chromeでファイルを開いて実際にオフラインでファイルを表示するには、そのファイルを次に渡す必要があります。

open -a 'Google Chrome' <sed_output>

最後に、よりトリッキーな部分(!)は、エイリアスとタイプを設定できるようにプロセス全体を関数に切り替える必要があるということです。

chromeopen myfile.gsheet

そのファイルからURLを抽出して開くように渡します。

ありがとうございます!

修正する

mmusanteの提案に従ってこれを行うためのエイリアス関数を作成しました。

chromeopenfunc() {
    open -a 'Google Chrome' "$(sed 's/.*\(https[^"]*\)".*/\1/' $1)"
}
alias chrome=chromeopenfunc

ベストアンサー1

$()演算子を使用して、sed出力をコマンドラインに直接配置できます。例えばopen -a 'Google Chrome' "$(sed 'blah blah blah')"

おすすめ記事