grep
checks for matches in a file. sed
is a stream editor. What you can do is locate the file containing a string (or line of code) using grep
, then stream (or pipe) the file through sed
to create a new (updated) file, then overwrite the old file.
From the top of my head:
STRING="Import {something,somethingElse} from “something”"
REPLACE="Import {something} from “something”"
MATCHING_FILES=$(grep -r $(DIR) -e "$STRING" -l)
OUTPUT=`mktemp`
for file in "$MATCHING_FILES"; do
cat $file | sed -e "s/$STRING/$REPLACE/g" > $OUTPUT
cp $OUTPUT $file
done
For a single file, you can omit the grep
step as you know its path:
STRING="Import {something,somethingElse} from “something”"
REPLACE="Import {something} from “something”"
OUTPUT=`mktemp`
cat $YOUR_FILE | sed -e "s/$STRING/$REPLACE/g" > $OUTPUT
cp $OUTPUT $YOUR_FILE
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…