
次の形式のデータを含む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
出力をパイピングせずに実験する必要がありました。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