如何创建 sed 脚本来提示用户替换文件中的数字?

如何创建 sed 脚本来提示用户替换文件中的数字?

我是 Unix 新手,正在学习 sed 命令。我需要编写一个非常小的脚本来搜索文件中的数字并替换它。我尝试执行 grep,然后从文件中删除特定的电话号码,然后添加另一个电话号码。但我被告知我可以在脚本中使用 sed 来替换。我知道如何在命令行上使用 sed 命令进行搜索和替换某些内容。但是我如何编写一个脚本,让用户搜索一个号码,然后让用户输入他们想要替换旧号码的号码。

到目前为止,我所做的是使用 grep 查找一个数字,这是有效的。但现在我陷入困境,如何让用户添加新号码,以便新号码可以替换旧号码。我尝试通过管道 grep 到 sed,反之亦然。到目前为止还没有运气。我听起来很多余,:/但我真的很沮丧。任何帮助将不胜感激:D。

答案1

这是您的起点:

#!/bin/bash

PHONEFILE=/path/to/your/file

# Prompt for search and replace numbers
# and simply exit if either is empty
# (in your actual script, you'll need to flesh this out with
# proper validation of phone number formats, error messages etc.!)
read -p "Number to search for: " oldnum
if [ ! "$oldnum" ]; then exit; fi

read -p "Replace with number: " newnum
if [ ! "$newnum" ]; then exit; fi

# Search and replace, change the phone file directly
# and create a backup of the previous version with .bak extension
# This assumes a file containing one phone number per line
sed -i .bak 's/^'"$oldnum"'$/'"$newnum"'/' $PHONEFILE

相关内容