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という2つのパラメータを使用してスクリプトを作成します。

#!/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)、2つの引数を使用して呼び出すと、正しい結果が得られるまでテストされます。 (ディレクトリがすでに存在していると文句を言うのを防ぐmkdirオプション)。出力からそれをエスケープして保存すること-pに特別な注意を払ってください。$\

完了したら、2つのパラメータを使用して各行のスクリプトを呼び出します。

awk -F "," '{print "./doit.sh " $1 " " $2}' web_url.csv  | sh

実行方法に応じてすべてのキーワード(for word in $key)を繰り返していますが、正しい操作を実行するのに一致するURLはありません。

この問題をどのように解決するかはわかりませんが、いくつかのことを行う必要がある場合は、常にそれらのうちの1つを正しく実行しようとし、その解決策を複数回使用する方法に焦点を当ててください。慣れていないため、出力が正しく呼び出されるまで、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

おすすめ記事