grepを使用して1行と複数行の両方に存在する文字列を取得するには?

grepを使用して1行と複数行の両方に存在する文字列を取得するには?

データの依存関係を見つけるために複数のSQLスクリプトを検索していますが、スクリプトの変更により興味深い問題に直面しました。

単語を検索すると、FROMその単語のある行のみが返されます。したがって、次は1行目と3行目のみを印刷しますが、3行目と4行目で最初の行を印刷する必要があります。どんな助けでも大変感謝します!

SELECT * FROM TABLE1

SELECT *

FROM

TABLE 2

ベストアンサー1

SQL文は通常;

この事実を利用して、区切られたレコードをawk読み取り、;各レコードにスティングがあるかどうかをテストできますFROM。そのようなレコードが見つかったら、すべての連続スペースを単一のスペースに圧縮し、すべての改行を単一のスペースに変更してから、次のように出力できます。

$ awk 'BEGIN { RS = ";" } /FROM/ { gsub("\n+|  +", " "); print }' statements.sql

次のファイルを使用してこれをテストします。

SELECT * FROM TABLE1;

SELECT *

FROM

TABLE2;

明らかにする

SELECT * FROM TABLE1
 SELECT * FROM TABLE2

おすすめ記事