ドット/拡張子のないパターンを検索するgrepファイル、空の場合は次の行を削除します

ドット/拡張子のないパターンを検索するgrepファイル、空の場合は次の行を削除します

次のデータを含むファイルがあります。 https://pastebin.com/TXrmVpwF 私が達成したいのは、パターンがありますが、名前に拡張子やドットがないすべての行を見つけて削除し、trueの場合はその後の空の行を削除することです。

パターン:

# /x/123

# /x/test

# /x/test_backup

# /x/123/10

答え1

ファイルがUnixテキストファイル(DOSテキストファイルではない場合はdos2unix最初に実行する必要があります)であるとします。

sed '/^#/{ /\./!{ N; /\n$/d; }; }' <file

注釈付きsedスクリプト:

/^#/{           # The current line starts with a "#"
    /\./!{      # The current line does not contain a dot
        N;      # Append next line with a \n in-between
        /\n$/d; # The line just appended was empty, delete, start next cycle
    }
}
                # (implicit print)

ディレクトリ名にはドットが許可されていますが、最後のパス名部分にはドットが許可されていない場合(つまり、後に# /x.x/text空白行がある場合は削除する必要があります)/\./に変更します/\.[^/]*$/

答え2

質問についてはよくわかりませんが、答えは次のとおりです。

grep -v '\.' TXrmVpwF | grep -e '/'

grep -v '\.':点付きの行をフィルタリングします。

grep -e '/': 残りのパスを取得します。

結果は次のとおりです。

# /x/123
# /x/test
# /x/test_backup
# /x/123/10
# /x/123/100
# /x/123/103
# /x/123/1333

関連情報