SEDチャレンジ、中括弧を含む文字列の集計

SEDチャレンジ、中括弧を含む文字列の集計

私は数時間sedを使用してテキストの特定の文字列パターンを集計しようとしましたが、解決策が見つかりませんでした。私はあなたが何をすべきかを知っていることを願っています! ?

  • 私のターゲットのテキストは文字列のみで構成されています(見えない\ tは存在しません)。
  • (TAB)を含みますが、少なくとも2つは互いに隣接し、最大8つは互いに隣接する文字列部分を見つけて単一の(TAB)項目に置き換えたいと思います。

  • 検索は、bashスクリプトを含むシェルファイルで実行する必要があります。

例:

#!/bin/bash

text="Column One(TAB)(TAB)(TAB)Column Two(TAB)(TAB)Column three(TAB)Column4"

modText=`echo $text | sed 's/([(]\{1\}TAB[)]\{1\})\{2,8\}/(TAB)/g'`
  • 私はいくつかのバージョンのsed-commandを試しましたが、上記はそのうちの1つだけです。私の最初の考えはmodText = `echo $ text | sed 's/\(TAB\)\{1\})\{2,8\}/(TAB)/g'` でした。

あなたが私を助けることができれば良いでしょう。解決策はそれほど遠くないように感じますが、もはやアイデアはなく、私の研究でもうまくいきませんでした。 :-S


テキストの例

「第1列(TAB)(TAB)(TAB)第2列(TAB)(TAB)第3列(TAB)第4列」

私の検索基準は、「最初の列」と「3番目の列」の間に表示される最初の2つ(TAB)グループと一致します。

結果次のようにする必要があります。

「第1列(TAB)第2列(TAB)第3列(TAB)第4列」

ベストアンサー1

「最大8」条項がどのように適用されるかはわかりませんが、素朴なアプローチは次のとおりです。

sed 's/\((TAB)\)\{2,8\}/(TAB)/g'

おすすめ記事