csv 파일에서 디렉터리 및 파일 만들기

csv 파일에서 디렉터리 및 파일 만들기

다음 형식의 데이터가 포함된 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출력을 파이핑하지 않고 실험해야 했습니다 .shdoit.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

관련 정보