sedは一致するテキストを切り取り、ファイルの先頭に貼り付けます。

sedは一致するテキストを切り取り、ファイルの先頭に貼り付けます。

ディレクトリに多数のテキストファイルがあり、最初のコメントセクションを切り取り、ファイルの先頭に貼り付けたいです(コメントテキストは長さと開始点が異なり、場合によっては存在しない場合があります)。最初の50行に位置)。私はbashコードを使用してすべてのファイルを処理し、各ファイル名にsedを使用して「」と「」の間に含まれるコメントテキストの最初のブロックを切り取り、ファイルの一番上に移動するつもりです。最初は、sedを使用して一致するテキストブロックを見つけて、sedを使用してスペースを節約するネストされたsedコマンドが必要だと思う問題があります。 Ubuntu23.04

オリジナルサンプル:

from itertools import permutations
import time

'''
Here is some comment text
that should be at start of file
some more lines
'''

def somepythoncode(x):
    return x+1

ターゲット:

'''
Here is some comment text
that should be at start of file
some more lines
'''
from itertools import permutations
import time

def somepythoncode(x):
    return x+1

ベストアンサー1

そしてed

printf '%s\n' "/^'''$/; // m 0" wq | ed -s file.py
  • /^'''$/;与えられた式に一致する最初の行にカーソルを移動します。
  • m 0アドレス指定された行を行0の後の行に移動します(つまり、一番上に挿入します)。アドレスはであり//、これは最も最近一致した正規表現が再利用されることを^'''$意味します。これは次のように使用されます。終わりコマンドのアドレスです。これスタート住所は暗黙的です.(現在の行)。
  • wq変更をファイルに書き換えます。

/^'''$/; //+1 m 0別の線を使用して終了範囲を拡張できます。

おすすめ記事