shell 使用bash脚本替换前缀为“Mr”的所有姓氏

nvbavucw  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(110)

我有一个csv文件,其中每行包含一个人的名字,如下所示。

| 11th October  | 06 6606 1161 | Mr Bean is 43 years old. Mr Bean likes apples. |

字符串
我的目标是编写一个bash脚本,用一个新的姓氏替换文件中的姓氏。
例如,使用脚本replace_surname.sh-

#!/bin/sh

if [ ! -z $1 ]
then
    #replace surname following 'Mr' with $1
fi


我希望,给定上面的csv和命令replace_surname.sh Smith

| 11th October  | 06 6606 1161 | Mr Smith is 43 years old. Mr Smith likes apples. |


我试过的-

sed -i 's/^Mr .*$/Mr PacMan/' test.csv


还有一些来自here的文件,这对文件没有任何影响.
我有点卡住了,我的csv文件有数百条记录,所以我不想用手来做这一切!任何帮助都非常感谢:)

5anewei6

5anewei61#

这应该可以做到:

#!/bin/sh

if [ -n "$1" ]; then
  new_surname="$1"
  sed -i "s/Mr\s\+\(\w\+\)/Mr ${new_surname}/g" /tmp/mr
fi

字符串
即如果旧姓是1个字
Regex可以进一步改进,但您应该了解

相关问题