Board logo

标题: [问题求助] 【已解决】sed用法:如何保留倒数第 2 5 8 11 行 [打印本页]

作者: 思想之翼    时间: 2015-12-14 02:04     标题: 【已解决】sed用法:如何保留倒数第 2 5 8 11 行

本帖最后由 思想之翼 于 2015-12-14 11:48 编辑
  1. sed -i -n "1p;$p" "D:\数据\*.txt"
复制代码
意为保留第1与最后一行,如果要保留倒数第 2 5 8 11 行,如何写代码?
作者: CrLf    时间: 2015-12-14 02:36

仅作示例,只保留倒数 2、5 行:
  1. sed -i -n "1{N;N;N;};N;${s/\n[^\n]*$//;s/[^\n]*\n//3;s/[^\n]*\n//2;p};D;" a.txt
复制代码
具体怎么搞楼主自己折腾去吧
作者: codegay    时间: 2015-12-14 06:50

  1. """
  2. http://www.bathome.net/thread-38591-1-1.html
  3. 保留文件倒数第N行
  4. 依山居 6:08 2015/12/14
  5. 这个问题本质还是可以看是操作列表元素
  6. """
  7. with open("1.txt") as f:
  8.     txt=f.readlines()
  9. ln=len(txt)
  10. result=[txt[r] for r in range(ln,0,-1) if r==2 or r==5 or r==8 or r==11]
  11. print(result)
复制代码

作者: codegay    时间: 2015-12-14 07:45

  1. """
  2. python字典取出文件倒数第N行.py
  3. http://www.bathome.net/thread-38591-1-1.html
  4. 依山居 7:44 2015/12/14
  5. 本质还是对数组进行操作
  6. 思路是生成行号,倒序历遍文件,生成字典,行号作为字典键。
  7. 这样使用时会很方便。
  8. """
  9. with open("1.txt") as f:
  10.     txt=f.readlines()
  11. keys=[r for r in range(1,len(txt)+1)]
  12. result={k:v for k,v in zip(keys,txt[::-1])}
  13. print(result[2])#取出倒数第二行
  14. print(result[3])#取出倒数第三行
复制代码

作者: WHY    时间: 2015-12-14 08:34

  1. @echo off
  2. (for /f "delims=" %%i in ('sort /+10000 a.txt') do (
  3.     set /a "n+=1, 1/(n-2), 1/(n-5), 1/(n-8), 1/(n-11)" || echo;%%i
  4. ))>b.txt 2>nul
  5. pause
复制代码

作者: codegay    时间: 2015-12-14 19:47

  1. with open("1.txt") as f:
  2.     txt=f.readlines()
  3. txt[-2]#取出倒数第二行
  4. txt[-3]#取出倒数第三行
  5. txt[0]#第一行
  6. txt[1]#第二行
  7. txt[2]#第三行
  8. [print(txt[l]) for l in [-2,-5,-8,-11]]
复制代码
更简单直接的方法。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2