![awk + 중복된 줄을 제거하지만 #으로 시작하는 줄은 무시합니다.](https://linux55.com/image/115266/awk%20%2B%20%EC%A4%91%EB%B3%B5%EB%90%9C%20%EC%A4%84%EC%9D%84%20%EC%A0%9C%EA%B1%B0%ED%95%98%EC%A7%80%EB%A7%8C%20%23%EC%9C%BC%EB%A1%9C%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EC%A4%84%EC%9D%80%20%EB%AC%B4%EC%8B%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
/etc/fstab
Linux의 파일에서 중복 행을 제거하기 위해 다음 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
그러나 이것은 결국 두 번 작동하게 됩니다.