ind*_*ira 5 unix bash shell replace sed
我想知道如何替换整个文件中第一次出现的搜索模式.例如,
import java.io.File;
import java.io.File;
Run Code Online (Sandbox Code Playgroud)
应该被替换
import java.io.IOException;
import java.io.File;
Run Code Online (Sandbox Code Playgroud)
我如何使用sed实现这一目标?谢谢
您可以使用 shell 脚本 (Bash)
#!/bin/bash
declare -i toggle=0
while read -r line
do
case "$line" in
*import*java.io.File*)
if [ $toggle -eq 1 ];then
echo "$line"
continue
fi
echo "import java.io.Exception";
toggle=1
continue
;;
esac
echo "$line"
done < file
Run Code Online (Sandbox Code Playgroud)
样本输出
$> more file
import java.util.Scanner;
import java.io.File;
import java.io.File;
$> bash search_replace.sh
import java.util.Scanner;
import java.io.Exception
import java.io.File;
Run Code Online (Sandbox Code Playgroud)
或者您可以将整个文件放入内存并进行一次性替换
data=$(<file)
echo "${data/import java.io.File;/import java.io.IOException}"
Run Code Online (Sandbox Code Playgroud)