Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 用于屏蔽高达12位的信用卡的Sed命令_Unix_Sed - Fatal编程技术网

Unix 用于屏蔽高达12位的信用卡的Sed命令

Unix 用于屏蔽高达12位的信用卡的Sed命令,unix,sed,Unix,Sed,问题: 在给定的信用卡号行中,用星号(即*)遮住每个信用卡号的前12位,并在新行上打印遮住的卡号。每个信用卡号由四个空格分隔的四位数组组成。例如,信用卡号码1234 5678 9101 1234将被屏蔽并打印为*********1234 我们怎么能用sed命令,我不知道如何处理空间? 请帮帮我 样本输入 1234 5678 9101 1234 2999 5178 9101 2234 **** **** **** 1234 **** **** **** 2234 样本输出 1234 5

问题:

在给定的信用卡号行中,用星号(即*)遮住每个信用卡号的前12位,并在新行上打印遮住的卡号。每个信用卡号由四个空格分隔的四位数组组成。例如,信用卡号码1234 5678 9101 1234将被屏蔽并打印为*********1234

我们怎么能用sed命令,我不知道如何处理空间? 请帮帮我

样本输入

1234 5678 9101 1234  
2999 5178 9101 2234  
**** **** **** 1234
**** **** **** 2234
样本输出

1234 5678 9101 1234  
2999 5178 9101 2234  
**** **** **** 1234
**** **** **** 2234
$echo-e“你好
1234 5678 9101 1234
2999 5178 9101 2234
另一个“|sed-E”s/^[0-9]{4}[0-9]{4}[0-9]{4}([0-9]{4})\b/**\1/g”
你好
**** **** **** 1234
**** **** **** 2234
别的
如果你想保留空间的可能性

$echo-e“你好
1234567891011234
2999 5178 9101 2234
另一个“|sed-E”s/^[0-9]{4}(\s*)[0-9]{4}(\s*)[0-9]{4}(\s*))([0-9]{4})\b/***\1***\2***\3\4/g”
你好
************1234
**** **** **** 2234
别的

如果您总是希望在输出中使用中间空格(即使不在输入中),则将
\1
\2
\3
替换为文字空格。

sed's/[0-9][0-9][0-9][0-9]/**/g'

说明:将“多个数字后加空格”替换为“***”


最后4位数字后面没有空格,因此不会用星号代替。

欢迎来到SO Akshay,因此,我们鼓励用户添加他们为解决自己的问题所付出的努力,因此请在您的问题中添加相同的代码标记,然后让我们知道。您可以匹配前14个字符,并将其替换为***************是的,这是一个好主意,我从未想过使用14个字符,让我试试这个…@RavinderSingh13它很好->sed's/[0-9][0-9][0-9][0-9]/*****/g'任何人有更好的解决方案,请提供您的指导。请在您的问题中添加多个示例输入(无描述、无图像、无链接)和该示例输入所需的输出(无评论)。->{4}
{4}的含义是什么
重复上一个字符的次数。在这种情况下,4个数字正好出现4次
{2,7}
发生在2到7次之间。请阅读并记住,您不仅在回答问题,而且在教育本帖的任何(未来)读者。这,请你的答案包含一个解释,解释为什么这个代码工作。非常好的解决方案,但请解释基本的细节。嗯,我们也可以这样做,但使用awk:awk'{print“****”,“****”,“****”,“****”,$4}'即使这样也可以工作,我认为这会更简短sed=>sed-r's/[0-9]{4}同一件事,但方式不同。。。。。!,我喜欢这个。