![ユーザーにファイルの数を変更するように求めるsedスクリプトをどのように作成できますか? [コピー]](https://linux33.com/image/87069/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AB%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E6%95%B0%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E6%B1%82%E3%82%81%E3%82%8Bsed%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E4%BD%9C%E6%88%90%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
私は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