首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >捕获特定列并掩蔽列

捕获特定列并掩蔽列
EN

Stack Overflow用户
提问于 2014-03-25 02:56:52
回答 1查看 983关注 0票数 0

我正在尝试编写脚本来捕捉和屏蔽特定的列,我需要有带有明文的4列,也需要在输出文件中屏蔽它,.I不确定如何掩蔽同一列

请帮助我重写以下命令或新命令

代码语言:javascript
运行
复制
input.txt
---------
AA | BB | CC | 123456

output.txt
---------
BB | 123456 | 12xx56

我写的剧本

代码语言:javascript
运行
复制
cat input.txt | nawk -F '|' '{print $2  "|" $4 "|" $4} >output.txt
EN

回答 1

Stack Overflow用户

发布于 2014-03-25 03:15:19

代码语言:javascript
运行
复制
nawk -F '|' '{print $2  "|" $4 "|" substr($4, 1,3) "xx" substr($4,6,2)}' input.txt > output.txt

输出

代码语言:javascript
运行
复制
BB | 123456| 12xx56

假设你真的不需要前导和尾随空间,我会做的

代码语言:javascript
运行
复制
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

终解

代码语言:javascript
运行
复制
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

我使用echo "..."简化了测试过程。你可以把它拿出来,用input.txt > output.txt和行的末尾来代替,它会像以前一样工作。

我添加了(length($4)-1),根据任何单词的长度(以$4为单位),使$4动态上的第二到最后一个字符的位置。

IHTH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22624629

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档