0

以下の内容のファイルがあります (file.conf):

/etc/:
rc.conf
passwd
/usr/:
/usr/local/etc/:

「/etc/:」と、最後に「:」が付いた最初に一致する行の間の行を選択する必要があります。

cat ./file.conf | sed -n '/\/etc\/:/,/\/.*:$/p'

すべてのコンテンツを印刷しますが、必要です

/etc/:
rc.conf
passwd
/usr/:

このコマンドcat ./file.conf | sed -n '/\/etc\/:/,/\/.*:$/p; :q'でも同じです。

4

2 に答える 2

1

解決awk

awk '/^\/etc\// {f=1} f; /:$/ && !/\/etc\//{f=0}' file.conf
/etc/:
rc.conf
passwd
/usr/:

別のバージョン

awk '/^\/etc\// {f=1;print;next} f; /:$/ {f=0}' file.conf

awk '
    /^\/etc\// {    # search for /etc/, if found do
        f=1         # set flag f=1
        print       # print this line (/etc/ line)
        next        # skip to next line so this would not be printed twice
        } 
    f;              # Is flag f set, yes do default action { print $0 }
    /:$/ {          # does line end with : 
        f=0         # yes, reset flag
        }
    ' file.conf
于 2013-10-23T11:48:06.283 に答える