ビッグデータがあり、grep
この文からテキストを削除して役職を維持するコマンドを探しています。このgrepコマンドを使用して^.*?at
単語の後に会社名を取得しましたが、at
今回は役職を維持したいと思います。grep
コマンドを使用する必要がありますか?
CEO at Insurance Menu
Founder & CEO at insurtech
AVP, Alliances and Analyst Relations at ValueMomentum
AGV-President at Aflac Ventures
たとえば、最初の行の最終結果はでなければならずCEO
、単語から全文を削除する必要があります。at Insurance Menu
BBEDIT(すべて検索と置換)機能を使用しています。
ベストアンサー1
修正する質問編集でBBEditの検索と置換オプションを使用する方法について詳しく説明します。これは、この回答で提案された元のソリューションをやや無効にします。
BBEditの検索と置換機能を使用した後にテキストを削除するには、代替テキストに検索パターンの埋め込みサブパターンの逆参照を含めることができるという事実をat
利用できます。(...)
したがって、あなたの目的に応じて使用することができます
(.*) at .*
〜のように探すモード(Grep
有効オプション)以前のすべてがat
「キャプチャグループ」に保存されるように
\1
これは「キャプチャグループ」の内容にすぎません。変えるテキスト。これはsed
本質的に、以下の回答の元のバージョンで提案されているのと同じ解決策です。
元の答え
入力ファイルの名前がと仮定しますcontact-details.txt
。
sed
1つのアプローチは、次のようにを使用することです。
sed -E 's/(.*) at .*/\1/' contact-details.txt
これは、便宜上、EREとキャプチャグループを使用して、行全体をその行(最後の行)の前のテキストである括弧s
内の部分(最初のキャプチャグループ、次に示す)にのみ置き換えます。一度だけ発生すると仮定されます。\1
at
at
入力例の場合、出力は次のようになります。
CEO
Founder & CEO
AVP, Alliances and Analyst Relations
AGV-President
別の方法は、次のようgrep
に使用することです。Perl互換正規表現構文と「攻撃的予測」を有効にします。
grep -Po '.*(?= at )' contact-details.txt
これは前のすべてのテキストと一致し、オプションのat
おかげで-o
ただこのテキストを印刷し、at
その後の内容はすべて削除します。at
機能するには、回線に 1 つしかなければならないという同じ制限があります。