1

レコードの設定間隔で、4 行/レコードを削除する必要があります。これは awk または sed で実行できますか。

70 番目のレコードごとにフォーム フィード文字を持つファイルがあります。これにより、出力に空白行が出力されます。

awk または sed を使用してフォーム フィードの前の 4 行を削除したいので、ページの長さは 66 行になりました。

これにより、空白のページが削除されます。

私が渡しているファイルは、スプール ファイル内の数千のレコードであり、簡単な解決策を望んでいました。私はもう試した

sed -n -e '65~68p; 

しかし、そのコマンドを実行しようとするとエラーが発生するため、UNIXボックスでそれを利用できるとは思いません。

4

3 に答える 3

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

仕事をするべきです。

于 2012-12-20T19:19:11.403 に答える
0
sed 'H;g;s:[^\n]::g;/.\{64\}/{N;N;N;s:.::g; x;s:\n::p;d};${x;s:\n::;p};d' FILE

この行は、行 65, 65*2, ..., 65*K の後の次の 3 行を削除します。

3 行以上削除する場合は、さらに N;N;N; を追加します。

于 2012-12-20T21:27:15.740 に答える
0

pbhd は、私が投稿する前に素晴らしい解決策を提供してくれましたが、Python を使用して実行したい場合に備えて、ここに示します。

    import sys
    s = sys.stdin.read()
    for page in s.split('\f'):
        lines = page.splitlines()
        print '\n'.join(lines[:-4]) + '\f'
于 2012-12-20T19:26:29.940 に答える