sed:在n个字符的字符串的开头替换字符

时间:2014-02-10 11:54:22

标签: regex string replace sed substring

我有:

12223335566
19988776655
9918877665566
44410007777222
etc

我正在尝试找到用于替换1的sed语法,只有当1位于由10位数组成的字符串的开头时才会生成以上输入应该是这样的:

2223335566
9988776655
9918877665566
44410007777222

正如您所看到的,替换应该仅在前两个字符串中发生,而另外两个字符串保持不变,因为即使它们中的1后跟10个数字,它也不在开头。

3 个答案:

答案 0 :(得分:1)

使用sed

sed -r 's/^1([0-9]{10})$/\1/' file

答案 1 :(得分:1)

要从11位数字中删除开头1:

sed 's;^1\([0-9]\{10\}\)$;\1;' filename

答案 2 :(得分:0)

这是awk解决方案

cat file
12223335566
19988776655
1245245543
14545klk342
9918877665566
44410007777222

awk '$1+0>10000000000 && $1+0<199999999999 {sub(/^1/,x)}8' file
2223335566
9988776655
1245245543
14545klk342
9918877665566
44410007777222
相关问题