다음 형식의 데이터가 포함된 CSV 파일이 있습니다.
URL.csv
drive,http://www.drive.google.com/
wikipedia,https://en.wikipedia.org/wiki/%s
wolframalpha,http://www.wolframalpha.com/input/?i=%s
첫 번째 열의 각 항목에 대한 디렉터리를 만들고 해당 디렉터리 내에 디렉터리와 동일한 이름의 텍스트 파일을 만들고 싶습니다. 즉, 그림과 같은 파일 구조를 생성해야 합니다.
├───drive
│ - drive.txt
│
├───wikipedia
│ - wikipedia.txt
│
└───wolframalpha
- wolframalpha.txt
각 파일의 파일 내용은 다음과 같습니다.
#!/bin/bash
echo [$@]
echo "command=xdg-open \" $url $@\""
echo "icon="
echo "subtext=Search on $keyword for $@"
~에$urlsecond column
및 항목 으로 교체됨$키워드의 항목으로 대체됩니다 first column
.
편집하다:
awk -F "," '{print $1,$2}' web_url.csv | awk '{system("mkdir "$1)}'
awk -F "," '{print $1,$2}' web_url.csv | awk '{print $1 > $1".txt"}'
테스트 파일
key=`awk -F "," '{print $1}' web_url.csv`
search_url=`awk -F "," '{print $2}' web_url.csv`
for word in $key; do
echo 'echo "command=xdg-open \"$url$@\""'
echo 'echo "icon="'
echo "echo "\"subtext=Search on $word for \$@""\"
done
산출
echo "command=xdg-open \"$url$@\""
echo "icon="
echo "subtext=Search on wikipedia for $@"
echo "command=xdg-open \"$url$@\""
echo "icon="
echo "subtext=Search on wolframalpha for $@"
echo "command=xdg-open \"$url$@\""
echo "icon="
echo "subtext=Search on drive for $@"
폴더 내에 파일을 생성하고 각 파일에 대한 파일 콘텐츠를 생성하며 위 출력에 표시된 것처럼 단일 파일에 콘텐츠를 포함하지 않는 방법을 잘 모르겠습니다.
또한 출력에는 URL이 표시되지 않습니다.
답변1
doit.sh
먼저 키워드와 URL이라는 두 개의 매개변수를 사용하여 스크립트를 만듭니다 .
#!/bin/bash
mkdir -p $1
cat > $1/$1.txt << EOF
#!/bin/bash
echo [\$@]
echo "command=xdg-open \\" $2 \$@\\""
echo "icon="
echo "subtext=Search on $1 for \$@"
EOF
실행 가능하게 만들고( chmod +x doit.sh
) 두 개의 인수를 사용하여 호출하면 올바른 결과를 얻을 때까지 테스트합니다. ( 디렉토리가 이미 존재한다고 불평하는 것을 방지하는 mkdir
옵션 ). 출력에서 이를 이스케이프 처리 하고 보존하는 -p
데 특별한 주의를 기울이십시오 .$
\
완료되면 두 개의 매개변수를 사용하여 각 줄에 대한 스크립트를 호출합니다.
awk -F "," '{print "./doit.sh " $1 " " $2}' web_url.csv | sh
수행하는 방식에 따라 모든 키워드( for word in $key
)를 반복하고 있지만 올바른 작업을 수행하는 데 일치하는 URL이 없습니다.
이 문제를 어떻게 해결해야 할지 잘 모르겠지만, 여러 가지 작업을 수행해야 하는 경우 항상 그 중 하나를 올바르게 수행하려고 노력한 다음 해당 솔루션을 여러 번 사용하는 방법에 집중하세요. 익숙하지 않기 때문에 출력 이 올바르게 호출될 수 있을 때까지 awk
출력을 파이핑하지 않고 실험해야 했습니다 .sh
doit.sh
awk -F "," '{print "./doit.sh " $1 " " $2}' web_url.csv
출력은 다음과 같습니다.
./doit.sh drive http://www.drive.google.com/
./doit.sh wikipedia https://en.wikipedia.org/wiki/%s
./doit.sh wolframalpha http://www.wolframalpha.com/input/?i=%s