2013-02-20 62 views
2

我有这样一个文件(在第一列数字是行号)如何打印两个号之间的文本到一个新文件在UNIX

30.<unit id=20> 
31.... 
32.</unit> 
33.<unit id=40? 
34.... 
35.</unit> 
36<unit id=20> 
37... 
38.</unit> 
39.<unit id=40? 
40.... 
41</unit> 

我想两个行号之间的打印线,说32和39.我怎么能在Unix中完成这个任务?
我是新来的unix。 注意:我不想要perl脚本。

+2

哪个Shell?你有什么尝试? – gpojd 2013-02-20 15:03:29

回答

0

使用sed

sed -n '/^32/,/^39/p' file 
+0

谢谢。现在有一点变化。考虑我不必手动输入行号。我有一个文件是这样的: 13 | 20 35 | 45 75 | 96 546 | 633 我需要在一个新的文件中读取该文件的行号的脚本和他们每个人。 谢谢。 – Siva 2013-02-23 13:10:20

+0

@Siva - Upvote你喜欢这个问题的答案。将其中一个标记为最合适的答案(绿色复选标记),然后发布一个新问题 – 2013-02-23 13:17:51

+0

这不知何故无法通过最高票数工作回答 – frazras 2015-10-22 17:53:01

8

另一个与sed的方式:

sed -n '32,39p' filename 
+0

谢谢。现在有一点变化。考虑我不必手动输入行号。我有一个文件是这样的: 13 | 20 35 | 45 75 | 96 546 | 633 我需要在一个新的文件中读取该文件的行号的脚本和他们每个人。 谢谢。 – Siva 2013-02-23 13:10:59

1
sed -n '32,39p' input > output 

注意,这忽略了你的行号,并只简单的打印线32至39。如果你想匹配的字符串,使用Fredrik提出的解决方案。

+0

谢谢。现在有一点变化。考虑我不必手动输入行号。我有一个文件是这样的: 13 | 20 35 | 45 75 | 96 546 | 633 我需要在一个新的文件中读取该文件的行号的脚本和他们每个人。 谢谢。 – Siva 2013-02-23 13:08:03

0

我想你应该试试这个

sed '32,39!d' input > output 
+0

请为您的答案添加一些解释。 – DontVoteMeDown 2014-11-25 10:50:56

相关问题