텍스트를 읽고 #으로 시작하는 줄(즉, 주석 줄)을 만나는 awk를 어떻게 작성합니까?

텍스트를 읽고 #으로 시작하는 줄(즉, 주석 줄)을 만나는 awk를 어떻게 작성합니까?

단락이 끝날 때까지 각 후속 줄의 시작 부분에 # 뒤에 공백이 추가됩니다(단락은 빈 줄로 구분됩니다). 이미 #으로 시작하는 줄은 수정되지 않습니다. 예를 들어 다음 입력은 수정되지 않습니다.

a b c
d e f
# g h i
j k l
m n o

p q r
s t u

# v w x
# y z 1
2 3 4
# 5 6 7
8 9 0

으로 수정됩니다

a b c
d e f
# g h i
# j k l
# m n o

p q r
s t u

# v w x
# y z 1
# 2 3 4
# 5 6 7
# 8 9 0

답변1

이 시도,

awk '/^$/{comm=0}{if($1~/^#/){comm=1}else{if(comm){$1="# "$1}} print}' file

또는 동일한 내용의 긴 형식:

awk '
    # reset on empty line
    /^$/{comm=0}
    {
        if ($1~/^#/) {
            # start commenting lines when # found
            comm=1
        } 
        else { 
            # comment lines not starting with #
            if (comm){ $1="# "$1 } 
        }
        print
    }
' file

관련 정보