awk + 중복된 줄을 제거하지만 #으로 시작하는 줄은 무시합니다.

awk + 중복된 줄을 제거하지만 #으로 시작하는 줄은 무시합니다.

/etc/fstabLinux의 파일에서 중복 행을 제거하기 위해 다음 awk를 사용하고 있습니다 .

문제는 로 시작하는 줄도 제거한다는 것입니다 #.

awk로 시작하는 줄을 무시하도록 구문을 어떻게 변경할 수 있습니까 #?

awk '!a[$0]++'  /etc/fstab > /etc/fstab.new
cp /etc/fstab.new /etc/fstab

답변1

#반복되지 않는 줄뿐만 아니라 다음 문자로 시작하는 줄도 허용하도록 AWK에 지시합니다 .

awk '/^#/ || !a[$0]++' /etc/fstab > /etc/fstab.new

중복된 행 없이 이 작업을 피하려면(귀하의 의견에 따라) 다음과 같은 것을 사용할 수 있습니다.

if awk '!/#^/ && a[$0]++ { dup = 1 }; END { exit !dup }' /etc/fstab; then
    awk '/^#/ || !a[$0]++' /etc/fstab > /etc/fstab.new
    copy /etc/fstab.new /etc/fstab
fi

그러나 이것은 결국 두 번 작동하게 됩니다.

관련 정보