점/확장자가 없는 패턴을 찾는 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

관련 정보