我将数据组织在表格中(文本制表符分隔),如下所示:
NAME TIME ID DATE
--------
John 03:25:01 A10A 2015/05/12
Marry 01:01:15 N000M 2013/01/01
.
.
.
.
如何为该表中的每个名称创建文件夹?另外,如何将文件夹命名为 ID 和时间,如下所示:
For John the created folder name is A10A-032501
For Marry the created folder name is N000M-010115
答案1
tail -n+3 file | while IFS=$'\t' read -r name time id date; do mkdir "$id-${time//:/}"; done
运行后,将创建以下目录:
$ ls -d */
A10A-032501/ N000M-010115/
多线版本
有些人喜欢将 shell 代码分成多行:
tail -n+3 file | while IFS=$'\t' read -r name time id date
do
mkdir "$id-${time//:/}"
done
怎么运行的
tail -n+3 file
file
这会在删除两个标题行后将其发送到标准输出。while IFS=$'\t' read -r name time id date; do
这将在 中的行上开始循环
file
。使用制表符作为分隔符 ,IFS=$'\t'
将四列读入变量name
、time
、id
和date
。mkdir "$id-${time//:/}"
这将创建目录。
${time//:/}
从时间字段中删除冒号。done
这标志着循环的结束。
答案2
假设数据位于“data.tsv”中:
sed -e '1,2d' data.tsv | while read myN myT myI myD; do mkdir $myI-${myT//:/} ; done
说明: sed 在文件 data.tsv 上运行“-e”表达式“d”删除行“1,2”
您的示例中没有一个值包含空格,因此我没有重新定义 IFS。
剩下的就是一个标准的 while 循环。