2012-12-20 149 views
1

在設置的記錄間隔中,我需要刪除4行/記錄。這可以用awk或sed來完成。使用awk刪除行的第n行

我有一個文件,每70條記錄有一個換頁符。這導致在我的輸出中打印出空行。

我想使用awk或sed在換頁之前刪除四(4)行,因此我的頁面現在已經有66行。

這應該消除我的空白頁面。

我傳遞的文件是假脫機文件中的幾千條記錄,我希望有一個簡單的解決方案。我試過

sed -n -e '65~68p; 

但我不認爲我的unix盒子上有這樣的空間,因爲當我嘗試運行該命令時出現錯誤。

回答

2
awk '{if ((NR%70) <65) print $0;}' inputfile 

應該做的工作。

+0

做了我需要它做的 - 完全!謝謝 –

+0

@TomBell,現在的禮儀是通過接受它來獎勵正確答案 - 參見http://meta.stackexchange.com/a/5235 –

+1

'awk'(NR%70)<65'inputfile' –

0

pbhd給了一個很好的解決方案之前,我設法張貼礦,但在這裏它是如果你想使用Python這樣做:

import sys 
    s = sys.stdin.read() 
    for page in s.split('\f'): 
     lines = page.splitlines() 
     print '\n'.join(lines[:-4]) + '\f' 
0
sed 'H;g;s:[^\n]::g;/.\{64\}/{N;N;N;s:.::g; x;s:\n::p;d};${x;s:\n::;p};d' FILE 

這條線將刪除接下來的3行在65,65 * 2,...,65 * K之後。

如果要刪除多於3行的行,請添加更多的N; N; N ;.

+0

would not this只刪除我的文件的第三和四行?我需要它刪除整個文件中的行。例如,我需要將67,68和69行刪除,然後再讀取67行後再刪除三行。 –

+0

糾正和簡化了一點 – alinsoar