SED - ファイルの終わりの前の N 行を指定します。

SED - ファイルの終わりの前の N 行を指定します。

sedファイルが終了する前にN行のファイルアドレスを指定する簡単な方法はありますか?

たとえば、ファイルの内容を挿入しようとすると簡単に挿入できます。存在するで終わるsed -i '$ r file2.txt' file1.txt前に で終わるが、sed -i -e '$ e cat file2.txt' file1.txtいくつかのN行で道が見つからないようです。今後ファイルの終わり。$-55が垂直線であるのと同じです。おそらくheadいくつかの組み合わせを使用できることを知っていますが、tail純粋なアプローチを探していますsed

答え1

ファイルを元に戻したい場合があります。最初N ライン、次にそのラインの出力を反転します。

$ seq 100 > file
$ tac file | sed -n 5,10p | tac
91
92
93
94
95
96

答え2

他の答えと同様に、大きなバッファがない限り、sedを使用して1行でこれを行う方法がわかりませんが、2行を使用する方が簡単です。

NUM_LINES=$((`sed -n $= file1.txt`-20))   # or however many lines you want instead of 20
sed -i "$NUM_LINES r file2.txt" file1.txt

確かに、あなたはこれを一行にしたいと思い、N;N;多くのsを使って行うことができますが、おそらくそれほど実用的ではありません。

関連情報