我有一个文本文件,其组织方式如下:
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}
与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
通过第二个字段(名称)的值将第一个字段$1
(链接)中的值写入目录g
名称中的文件$2
。考试:
$ cat Group\ 2/doug
pokpompojm.html
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句