ファイル内の特定のテキストのみを別のファイルにコピーする

ファイル内の特定のテキストのみを別のファイルにコピーする

内容が次のようなabc.txtファイルがあります。

<classpathentry kind="src" path="Sources"/>
<classpathentry kind="con" path="WOFramework/ERExtensions"/>
<classpathentry kind="con" path="WOFramework/ERJars"/>
<classpathentry kind="con" path="WOFramework/ERPrototypes"/>
<classpathentry kind="con" path="WOFramework/JavaEOAccess"/>
<classpathentry kind="con" path="WOFramework/JavaEOControl"/>
<classpathentry kind="con" path="WOFramework/JavaFoundation"/>
<classpathentry kind="con" path="WOFramework/JavaJDBCAdaptor"/>

すべてのパスを別のファイルにコピーしたいです。つまり、出力テキストファイルが次のようになります。

    WOFramework/ERExtensions
    WOFramework/ERJars
    WOFramework/ERPrototypes
    WOFramework/JavaEOAccess
    WOFramework/JavaEOControl
    WOFramework/JavaFoundation
    WOFramework/JavaJDBCAdaptor

ベストアンサー1

ファイルが同じパターンに従うと仮定します。この場合、次のコマンドを使用できます。

grep -o ' path=.*$' file.txt | cut -c8- |rev | cut -c 4- | rev

そのため、ファイルを開き、cat文字のみを抽出してから不要なpath=文字を削除し、cutそのrev技術を使用して末尾から不要な文字を削除します。

別のawkメソッド

awk -F'path="' '{print $2}' file.txt |rev | cut -c 4- | rev

私はpath="区切り文字として使用し、その後にすべての情報を印刷します。デフォルトではrev上記と同じことを行います。

テスト

cat file.txt
<classpathentry kind="src" path="Sources"/>
<classpathentry kind="con" path="WOFramework/ERExtensions"/>
<classpathentry kind="con" path="WOFramework/ERJars"/>
<classpathentry kind="con" path="WOFramework/ERPrototypes"/>
<classpathentry kind="con" path="WOFramework/JavaEOAccess"/>
<classpathentry kind="con" path="WOFramework/JavaEOControl"/>
<classpathentry kind="con" path="WOFramework/JavaFoundation"/>
<classpathentry kind="con" path="WOFramework/JavaJDBCAdaptor"/>

コマンドを実行した後、

Sources
WOFramework/ERExtensions
WOFramework/ERJars
WOFramework/ERPrototypes
WOFramework/JavaEOAccess
WOFramework/JavaEOControl
WOFramework/JavaFoundation
WOFramework/JavaJDBCAdaptor

Stephaneはコメントでより良い方法を提供します。

cut -d '"' -f4 file.txt

おすすめ記事