channel-san文件内容如下,现在需要根据内容中的方括号[]来创建文件名,方括号[]以后行的内容为新建文件的内容。
[dvb-t/au-Adelaide]
T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 184500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 191500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 564500000 7MHz 2/3 NONE QPSK 8k 1/8 NONE
[dvb-t/au-AdelaideFoothills]
T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 760500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 781625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 795500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
[dvb-t/au-Ballarat]
T 592625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 620625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 634625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
[dvb-t/au-Bendigo]
T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 529500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
实现脚本s.sh如下,在linux系统中命令执行bash s.sh运行,s.sh和channel-san文件在相同目录下。
#!/bin/bash
fileName=""
format="dvb-s"
mkdir $format
while read -r line #循环读取channel-scan中每一行存到line
do
echo "line=$line "
if [[ $line == *[* ]];
then
fileName=$line
fileName=${fileName/\[} #删除文件名中的字符[
fileName=${fileName/\]} #删除文件名中的字符]
echo "fileName=$fileName"
if [[ $fileName == *$format* ]]; #判断文件名包含字符串dvb-s
then
echo "create $fileName "
echo "#$fileName" >> $fileName #向文件中追加
fi
else
if [[ $fileName == *$format* ]];
then
echo "append $line to $fileName"
echo $line >> $fileName #向文件中追加读取到的行
fi
fi
done < channel-scan