ディレクトリに多数のテキストファイルがあり、最初のコメントセクションを切り取り、ファイルの先頭に貼り付けたいです(コメントテキストは長さと開始点が異なり、場合によっては存在しない場合があります)。最初の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
別の線を使用して終了範囲を拡張できます。