nawk -F '|' '{print $2 "|" $4 "|" substr($4, 1,3) "xx" substr($4,6,2)}' input.txt > output.txt
당신이 정말로 선행 및 후행 공백을 필요로하지 않는 가정 16,
출력
BB | 123456| 12xx56
, 나는 echo "..."
를 사용
echo "AA | BB | CC | 12345678" \
| awk -F '|' '{gsub(/ */, "", $0)
#dbg print "length$4=" (length($4)-4)
masking=sprintf("%"(length($4)-4)"s", " ") ; gsub(/ /, "x", masking)
print $2 "|" $4 "|" substr($4, 1,2) masking substr($4,(length($4)-1),2)
}'
BB|12345678|12xxxx78
이
nawk -F '|' '{gsub(/ */, "", $0);print $2 "|" $4 "|" substr($4, 1,2) "xx" substr($4,5,2)}' input.txt > output.txt
cat output.txt
BB|123456|12xx56
최종 솔루션을 만들 것 테스트 프로세스를 간소화합니다. 당신은 그것을 밖으로 가지고 간다 input.txt > output.txt
와 선의 끝으로 교환 하거든 이전 같이 일할 것이다.
(length($4)-1)
을 추가하여 $ 4에있는 단어의 길이에 따라 동적 인 $ 4에서 마지막 두 번째 문자의 위치를 동적으로 설정했습니다.
IHTH
열 4의 값은 항상 6 문자가됩니까? 그렇지 않은 경우 샘플을 편집하여 다른 크기로 발생할 것으로 예상되는 것을 나타냅니다. 행운을 빕니다. – shellter
4 번째 열의 값은 고정 길이입니다. 항상 6 자입니다. – user3326101