更新:
我有一个非常大的文件。我需要屏蔽特定位置和特定记录类型中的所有字符。我搜遍了所有地方,但找不到这个非常简单的任务的解决方案。这是一个例子
档案名称: hello.txt的
文件:
0120140206INPUT FILE
1032682842 MR SIMPSON
20231458 742 Evergreen Terrace
3034560817绿色
1032682842 MR GRIFFIN
20231458 Spooner Street
3034560817 RED
3001
我想做的是屏蔽从10开始的所有行的12-16位。像这样:
0120140206INPUT FILE
1032682842 XXXXXMPSON
20231458 742 Evergreen Terrace
3034560817绿色
1032682842 XXXXXIFFIN
20231458 Spooner Street
3034560817 RED
3001
答案 0 :(得分:0)
试试这个:
sed 's/^\(10[0-9]\+[ \t]\+\).*$/\1XXXXXXXXXXXXX/g'
示例:
sed 's/^\(10[0-9]\+[ \t]\+\).*$/\1XXXXXXXXXXXXX/g' <<< "0120140206INPUT FILE
1032682842 MR SIMPSON
20231458 742 Evergreen Terrace
9001"
答案 1 :(得分:0)
使用awk:
awk '/^10/{q=substr($0, 12); gsub(/./, "*", q); $0=substr($0, 1, 11) q}1' file
0120140206INPUT FILE
1032682842 **********
20231458 742 Evergreen Terrace
9001
更新:如果您只想屏蔽前10条记录,请使用此awk:
awk '!done && /^10/{q=substr($0, 12);gsub(/./, "*", q);$0=substr($0, 1, 11) q;done=1}1' file