这可能是一个简单的问题,但我很努力地找到一个解决方案,任何人都可以提供一个简单的UNIX sed或awk命令来删除文件的第3行和第4行,从第5行开始线。Sed/Awk删除选择性行
0
A
回答
2
如果您使用的是GNU sed,则可以使用地址格式FIRST~STEP
,例如。
sed -e '6~3 d' -e '8~4 d' file
删除第6行,然后每隔3行,然后删除第8行,然后每隔4行。
+0
干杯找到了这个,但没有GNU sed,应该说明这一点! – DrewC 2011-02-09 13:40:04
0
Perl怎么样?
perl -pi -e 'print if $. < 5 or 1 == $. % 4 or 2 = $. % 4' your_file
2
假设我已经理解了要求,就可以使用awk
如下:
pax$ echo '1
2
3
4
5
6
7
8
9
10
11
12
13
14
15' | awk '{if (((NR - 5) % 4 < 2) || (NR < 5)) {print}}'
1
2
3
4
5
6
9
10
13
14
正如你可以看到,这里采用NR
(行号)决定是否或不打印线。
从第5行开始,它打印两个,然后跳过两个,无限次地。低于5时,它会打印所有内容。
如果我错误地理解了其中你想要跳过的行,理论依然是健全的,你只需要调整if
声明。
+0
谢谢!这很好用! – DrewC 2011-02-09 13:42:06
2
一个awk的解决方案,在那里你通过你的号码作为参数:
awk -v start=5 -v d1=3 -v d2=4 '
{n = NR - start}
n > 0 && (n % d1 == 0 || n % d2 == 0) {next}
1
'
此跳过线8,11,14,...和9,13,17,...
相关问题
- 1. 删除行选择
- 2. MySQL选择并删除行
- 3. 选择和删除行
- 4. UITableViewCell:允许选择性删除
- 5. 选择性的UITableView删除单元格?
- 6. 删除选择框
- 7. Mysql删除选择
- 8. 如何从URL中选择性删除换行符
- 9. 选择性删除共享日期行,留下
- 10. 删除基于多行选择
- 11. 休眠在选择时执行删除
- 12. 根据值选择/删除某些行
- 13. DataTables,选择行并返回ID删除
- 14. 删除默认行选择datagridview
- 15. TableView不选择删除新行
- 16. SQLite从选择结果中删除行
- 17. 在Asp.net的Gridview中选择删除行
- 18. 删除选择后SWT选择事件
- 19. 删除从哪里存在(选择...)删除所有行
- 20. 插入选择删除
- 21. 与选择删除mysql的
- 22. MySQL搭配选择删除
- 23. 删除文件,我选择
- 24. 删除选择的表
- 25. 选择后删除DropDownList值
- 26. Magicsuggest删除所有选择
- 27. 选择/删除复制
- 28. 删除正确选择NSManagedObjects
- 29. gtk_menu_popup()删除treeview选择
- 30. 选择选项后删除ColdFusion选项
可能有帮助显示一些示例输入和您想要的输出。 – 2011-02-09 17:30:50