我有一個巨大的文本檔案,我需要在一個單獨的檔案中抓取每 n、n 1 行。
我遇到了 sed 命令,但這可以幫助我僅從文本檔案中獲取每 n 行。例如:
**
$ sed -n '0~4p' somefile**
**```**
Any suggestions on grabbing n 1th line at the same time?
**
$ sed -n '0~4p' somefile** ```
uj5u.com熱心網友回復:
這是一種可能的解決方案(猜測這是所需的輸出):
$ seq 20 | sed -n '0~4{N;p}'
4
5
8
9
12
13
16
17
根據命令手冊:N
將換行符添加到模式空間,然后將下一行輸入附加到模式空間。如果沒有更多輸入,則 sed 退出,不再處理任何命令。當使用 -z 時,將在行之間添加一個零位元組(ascii 'NUL' 字符)(而不是新行)。
如果20也應該是上述輸入的輸出的一部分,您可以使用:
seq 20 | sed -n '0~4{p;n;p}'
# alternative solution if ~ address range isn't supported
seq 20 | sed -n '1b; n;n;p;n;p'
uj5u.com熱心網友回復:
的~選項sed是非標準的,但可以做你想做的事。但使用起來似乎更自然awk:
awk 'NR>1 && NR % n < 2' n=5
(例如):
$ yes | nl | sed 20q | awk 'NR>1 && NR % n < 2' n=5
5 y
6 y
10 y
11 y
15 y
16 y
20 y
uj5u.com熱心網友回復:
這可能對您有用(GNU sed):
sed -n '4~4, 1p' file
這將列印從第 4 行開始的第 4 加 1 行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521558.html
標籤:linux文本sed线
