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')"

관련 정보