【发布时间】:2017-09-27 08:47:15
【问题描述】:
我有一个主文件如下:
/* ------------- AAAAAAAA ------------- */
some
lines
here
/* ------------- BBBBBBBB ------------- */
more
things
/* ------------- CCCCCCCC ------------- */
there
a
few
more
lines
我的最终目标是创建一个仅包含包含特定字符串的块的文件,例如,如果该字符串是 lines,那么我将有一个像这样的输出文件:
/* ------------- AAAAAAAA ------------- */
some
lines
here
/* ------------- CCCCCCCC ------------- */
there
a
few
more
lines
为了达到我的目标,我首先尝试通过 bock 将我的主文件拆分为子文件以获得类似
- 文件-1
- 文件-2
- 文件-3
然后我计划检查每个文件,如果随后包含搜索到的字符串,那么我将它们附加回我的新主文件。
老实说,我不知道这是否是最好的方法,而且我的主文件中有 30139 行的 1600 多个块,所以要解析的内容很多。
但是,如果我保持这种方式来完成这项工作,我的代码仍然存在问题:
#!/bin/ksh
i=0
while IFS=\| read -r "line"; do
if [ `echo $line | grep '/* ------' | wc -l` -eq 1 ]; then
i=$((i+1))
fi
echo $line > "file-$i"
done < $1
由于每个块由/* -------- 分隔,如果我执行echo $line,输出将是我的根目录(/etc、/tmp 等)而不是$line 本身。
所以我知道这是一个 2 个问题的帖子,但因为第二个问题可以使用不同的脚本方式绕过,所以它肯定是链接的。
编辑:
解决方案必须在 korn shell 中,因为我无法在这台机器上安装任何东西
【问题讨论】:
-
请在您的问题中添加:解决方案必须在 korn shell 中。