Bash
Bash腳本將每行的第一個位置回顯到具有第二個名稱的文件中
我有一個組織如下的文本文件:
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