替换字符串的前四个字符

时间:2018-06-05 15:21:50

标签: regex sed replace mask

我需要使用Sed Editor中的Regular Expression屏蔽4个字符后的字符串。

示例:1234567890
结果:1234XXXXXX

你能帮助我吗?

5 个答案:

答案 0 :(得分:2)

在GNU sed中:

echo "1234567890" | sed "s/./X/5g"

答案 1 :(得分:0)

关注awk可能会对您有所帮助。

echo "1234567890" | awk '{for(i=5;i<=length($0);i++){val=val?val "X":"X"};print substr($0,1,4) val;val=""}'

输出如下。

1234XXXXXX

答案 2 :(得分:0)

$echo "1234567890"|awk '{for(i=5;i<=NF;i++)$i="X"}7' FS="" OFS=""
1234XXXXXX 

答案 3 :(得分:0)

使用perl,您可以在替换文本中放置任意perl代码:

perl -pe 's/^(....)(.*)/$1 . "X" x length($2)/e' <<END
1
12
123
1234
12345
123456
1234567
12345678
123456789
1234567890
END
1
12
123
1234
1234X
1234XX
1234XXX
1234XXXX
1234XXXXX
1234XXXXXX

答案 4 :(得分:0)

使用sed

count=4
echo "1234567890" | \
sed ':A;s/\(\(.\)\{'"$count"'\}\)\(X*\)[^X]/\1\3X/;tA'

sed -E ':A;s/((.){'"$count"'})(X*)[^X]/\1\3X/;tA'