文字列を抽出してbashで置き換える

文字列を抽出してbashで置き換える

次の文字列があります。func showFetchNextSliceFailed(result: UserResult<[Product]>) {

これから私は考える1)。 2)のみ抽出しますshowFetchNextSliceFailed。同様に、与えられた行のすぐ上に挿入します#Mark showFetchNextSliceFailed

  func showProductsList(result: UserResult<[Product]>) {

  }

  func showFetchNextSliceFailed(result: UserResult<[Product]>) {

  }

予想出力:

  #Mark showProductsList
  func showProductsList(result: UserResult<[Product]>) {

  }

  #Mark showFetchNextSliceFailed
  func showFetchNextSliceFailed(result: UserResult<[Product]>) {

  }

grepとsedを試しましたが、まだ文字列を抽出して置き換える方法を正しく理解できませんでした。

ベストアンサー1

そしてsed

  • 一致するパターン空間をコピーして省スペース
  • パターン空間の変更
  • 予約済みスペースから元のコンテンツを復元して追加します。

前任者。

$ sed '/func show/ {h; s/func \(show[^(]*\).*/#Mark \1/; G;}' file
  #Mark showProductsList
  func showProductsList(result: UserResult<[Product]>) {

  }

  #Mark showFetchNextSliceFailed
  func showFetchNextSliceFailed(result: UserResult<[Product]>) {

  }

おすすめ記事