sed命令用行号替换多位数字

sed命令用行号替换多位数字

我有联系人名单。

例如

aashish 7905209890  
abhishek    9129429439  
anmol   918416973189    
avinash 917068575283

我想用线路号码替换每个电话号码。

我想用 1 替换第一个电话号码,用 2、第三个电话号码替换第二个电话号码。与 3 等

答案1

使用gawk你可以使用这个:

gawk -i inplace '{print $1, NR}' your_contact_list.txt

通常在 Linux 发行版中,该awk命令是指向gawk.所以你可以简单地这样做:

awk -i inplace '{print $1, NR}' your_contact_list.txt

但似乎awk -i inplace不符合 POSIX 标准,因为如果你使用:awk --posix -i inplace将显示以下错误:

awk: inplace:30: @load "inplace"
awk: inplace:30:  ^ syntax error

所以你可以使用:

awk '{print $1, NR}' your_contact_list.txt > new_contact_list.txt

笔记:如果您打算仅使用默认分隔符(空格)打印第一列和第二列,则可以使用'{print $1, NR}'.这将打印第一列(例如aashish)和当前数字行,两个字符串之间有一个空格。

如果要在两列之间指定任何字符串,则可以-v OFS='some string'在 awk 命令行上设置字段分隔符:

awk -i inplace -v OFS=' -- ' '{print $1, NR}' your_contact_list.txt
#Output:
aashish -- 1
abhishek -- 2
anmol -- 3
avinash -- 4

答案2

使用单行:

$ perl -i -lane 'print "$F[0] $."' file
$ cat file
aashish 1
abhishek 2
anmol 3
avinash 4

相关内容