![파일의 지정된 위치에 공백을 삽입합니다.](https://linux55.com/image/47003/%ED%8C%8C%EC%9D%BC%EC%9D%98%20%EC%A7%80%EC%A0%95%EB%90%9C%20%EC%9C%84%EC%B9%98%EC%97%90%20%EA%B3%B5%EB%B0%B1%EC%9D%84%20%EC%82%BD%EC%9E%85%ED%95%A9%EB%8B%88%EB%8B%A4..png)
다음 샘플 파일이 있습니다.
234234|111||J1X0H8|SERP||R|D|666|M
234235|222||J1X0N5|SERP||C||555|M
각 행에 대해 다음과 같이 네 번째 열의 세 번째 문자 뒤에 공백을 삽입해야 합니다.
234234|111||J1X 0H8|SERP||R|D|666|M
234235|222||J1X 0N5|SERP||C||555|M
sed 및 awks 명령을 사용해 보았지만 긍정적인 결과가 없었습니다. 어떻게 해야 하나요?
답변1
awk를 사용하면
awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file
하지만 이는 내부에서 편집할 수 없으므로 다음을 수행해야 합니다.
t=$(mktemp)
awk -F '|' -v OFS='|' '{sub(/^.../, "& ", $4); print}' file > "$t" && mv "$t" file
sed를 사용하여,
sed -i 's/^[^|]*|[^|]*|[^|]*|.../& /' file
우편번호를 확인하고 싶다면
sed -i 's/^\([^|]*|[^|]*|[^|]*|[[:alpha:]][[:digit:]][[:alpha:]]\)\([[:digit:]][[:alpha:]][[:digit:]]|\)/\1 \2/' file