日期:2014-05-16  浏览次数:20670 次

linux用shell替换文本问题
将题目中在括号内的 a-n 提取出来和题号对应构成一张表保存到文件1, 如 
1, a
2, ab
3, abc
.
.
.

并删除括号内的答案(在字母a-n之间),保存成文件2,


“题目”的格式如下:
1. xxxx( a-n )
A.
B.

2. xxx( a-n )
A.
B.
.
.
.

“题目”以数字开始,以点分割。两个题目间以空行分割。

如何shell编程实现?

------解决方案--------------------
下面是直接输出,你要输出到文件用一个重写向就可以了:
C# code
[nicenight@CSDN ~]$ sed -nr '/^[0-9]/!b; s/^([0-9]+\.).*\([ ]*([a-z]+)[ ]*\)/\1 \2/; p' file.txt
1. a
2. n
[nicenight@CSDN ~]$ sed -nr '/^[0-9]/!bq; s/^([0-9]+\..*\([ ]*)[a-z]+([ ]*\))/\1 \2/; :q; p' file.txt
1. xxxx(   )
A.
B.

2. xxx(   )
A.
B.