我正试图屏蔽此分隔文件中的第6列。目前我的尝试掩盖了整个文件。我在想我可能做错了什么。
当前:

awk 'BEGIN{FS=OFS="^^"} {gsub(/./, "X", $1)} 6' $1

输入:
00000000001^^00023^^111112233^^C^^ ^^Iwanttomaskthis                   ^^ ^^               ^^U^^W^^ ^^   ^^222^^6^^77
00000000001^^00024^^111112233^^B^^ ^^Iwanttomaskthis                   ^^ ^^               ^^X^^W^^ ^^   ^^333^^9^^88

预期:
00000000001^^00023^^111112233^^C^^ ^^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX^^ ^^               ^^U^^W^^ ^^   ^^222^^6^^77
00000000001^^00024^^111112233^^B^^ ^^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX^^ ^^               ^^U^^W^^ ^^   ^^222^^6^^77

最佳答案

您可以使用这个awk

awk 'BEGIN{FS="\\^\\^"; OFS="^^"} {gsub(/./, "X", $6)} 1' file

00000000001^^00023^^111112233^^C^^ ^^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX^^ ^^               ^^U^^W^^ ^^   ^^222^^6^^77
00000000001^^00024^^111112233^^B^^ ^^XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX^^ ^^               ^^X^^W^^ ^^   ^^333^^9^^88

这里我们需要转义^,因为^是一个特殊的regex元字符。

关于linux - mask 定界列shellscript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46161675/

10-09 06:12