일부 URL과 네트워크 이름이 포함된 file.txt가 있습니다. 그것은 다음과 같습니다:
WEB1: www.url.com
WEB2: www.url2.com
(이름에 공백이 없고 콜론 뒤에 공백이 있습니다.) 파일의 특정 웹사이트에 대한 탭을 Firefox에서 열 수 있기를 원합니다. 나는 다음과 같은 것을 시도했습니다 :
xargs -a file.txt firefox -new-tab "$line"
그러면 문서의 각 단어가 새 탭으로 열립니다. 네트워크 이름을 사용하여 열 URL을 선택할 수 있기를 원합니다. 한 번에 하나의 URL을 열어 보겠습니다. 파일 길이는 약 100줄입니다. 이를 수행하는 쉬운 방법이 있습니까? 감사해요!
Bodo가 제안한 대로 몇 가지 세부 사항은 다음과 같습니다.
urls.txt
HOME
질문에 표시된 줄을 포함하는 파일이 디렉터리에 있습니다 .- 키와 URL은 콜론과 공백(
:
)으로 구분됩니다. openurl foo bar baz
예를 들어 후행 콜론( ) 없이 파일의 키가 있는 명령을 실행하려고 합니다 .foo
bar
baz
WEB1
WEB2
:
답변1
awk
다음 을 사용할 수 있습니다 xargs
.
awk -F ': ' '$1 == "WEB2" {print $2}' file.txt | xargs -I{} firefox -new-tab {}
-F ': '
awk
필드를 콜론과 공백으로 구분 해 보겠습니다 . 이 시퀀스는 URL에 나타나서는 안 됩니다.
답변2
대답은 질문에 정의된 요구 사항을 기반으로 합니다.
다음과 같은 쉘 스크립트를 작성할 수 있습니다 openurl
.
#! /bin/sh
for i in "$@"
do
grep "^$i": "$HOME"/urls.txt
done | sed 's/.*: //' | while read url
do
firefox -new-tab "$url"
done
이를 실행하면 예제에 있는 두 개의 URL이 열려야 합니다 openurl WEB1
.www.url.com
openurl WEB1 WEB2
파일에 존재하지 않는 키는 무시됩니다. 이는 예를 들어 openurl WEB1 WEB3
열리고 www.url.com
아무것도 하지 않음을 의미합니다 WEB3
.
물론 openurl
쉘 스크립트 대신 함수를 생성할 수도 있습니다.
URL 테이블이 포함된 파일이 매우 크거나(행 1000개 이상) 많은 URL 키(10개 이상)를 지정하려는 경우 간단한 접근 방식이 느릴 수 있습니다. 이 경우 grep
각 명령줄 인수에 대해 여러 번 실행하는 것보다 다른 방법을 사용하여 파일에서 일치하는 모든 줄을 한 번에 추출하는 것이 좋습니다 .
탭에서 URL의 일부를 여는 방법아르툠 S.타슈키노프~의답변.
답변3
awk '{print $2}' file.txt | grep -v ": " | while read url; do firefox -new-tab "$url"; done
| grep -v ": "
OP가 지적했기 때문에 추가되었습니다 ."는 후행 콜론(:)이 없는 WEB1, WEB2와 같은 파일의 키입니다."