因为第一个 char 是一个管道,所以您$1
将始终是一个空字符串。您想检查$2
您的数据。
awk -F\| -v OFS=\| '{gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", $2)} 1' <<END
|112233456543214 |
| 154233456873221 |
| 154233456868320|
END
|112233456543214|
|154233456873221|
|154233456868320|
如果你使用-F
,你也不需要在 BEGIN 块中定义 FS 。
如果你想把它拼出来:
$ nawk -F '|' '
BEGIN {OFS = FS}
function obfuscate(string) {
gsub(/(^[[:blank:]]+)|([[:blank:]]+$)/, "", string)
return substr(string,1,6) "xxxxxx" substr(string,length(string)-3)
}
length($2) >= 13 {$2 = obfuscate($2) }
1
' <<END
|112233456543214 |
| 154233456873221 |
|123456789012|
|1234567890123|
|12345678901234|
| 154233456868320|
END
|112233xxxxxx3214|
|154233xxxxxx3221|
|123456789012|
|123456xxxxxx0123|
|123456xxxxxx1234|
|154233xxxxxx8320|