次のように構成されたテキストファイルがあります。
Group 1
asdsdsdsdf.html jeff
xcvxcvxcvx.html bob
vrgeiuvhif.html sue
Group 2
iwdowijdoi.html mary
pokpompojm.html doug
ndkjfsjfbs.html lisa
bash
各グループの名前を付けたディレクトリを作成するにはスクリプトが必要です。次に、最初の行に、そのリンクとともにグループ内の各人の名前を指定するテキストファイルがあります。
テキストファイルという名前のディレクトリとリンクのみを含むファイルを正常に作成しました。しかし、各リンクを各名前ファイルに反映する方法やグループごとに並べ替える方法がわかりません。
私は私が持っている少ないお金でそれを行うより良い方法があると確信しています。
#!/bin/bash
grep Group list.txt > groups
grep -v Group list.txt > links_names
while read file; do mkdir "${file}"; done < groups
while read line; do export name=`echo $line | awk '{print $2}'`
touch "$name"; done < links_names
while read line; do export link=`echo $line | awk '{print $1}'`
echo "$link" >> links ; done < links_names
rm {groups,links_names,links}
ベストアンサー1
そしてawk
:
awk '/^Group/{g=$0; system("mkdir \""g"\""); next} g&&$0{print $1 >g"/"$2}' file
/^Group/
行が文字列で始まる場合Group
...g=$0
変数をg
グループ名(たとえば)に設定しますGroup 1
。system(...)
システム関数呼び出しコマンドを使用してmkdir
ディレクトリを作成します(グループ名のスペースを処理するための追加の引用符に注意してください)。
g&&$0
変数が定義されてg
いて行が空でない場合...print $1 >g"/"$2
2番目のフィールド(名前)の値は、最初のフィールド(リンク)の値を$1
ディレクトリ名のファイルに書き込みます。g
$2
テストを受ける:
$ cat Group\ 2/doug
pokpompojm.html