我有联系人名单。
例如
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