查找和替换字符串linux的简单方法

时间:2018-10-30 02:59:18

标签: sed grep

我当前正在尝试在文件中查找行

layout-sw360dp-w740dp-xxxhdpi

,然后用另一个数字替换8000。

目前,在尝试将参数从awk传递到sed时一直停留。

#define IMAX 8000

不太确定如何从这里继续。

3 个答案:

答案 0 :(得分:1)

能否请您尝试以下。也将新数字的值替换为new_number。(已用GNU sed测试过)

echo "#define IMAX 8000" | sed -E '/#define IMAX /s/[0-9]+$/new_number/'

如果您要从Input_file读取输入并将其输出保存到Input_file本身,请使用以下命令。

sed -E '/#define IMAX /s/[0-9]+$/new_number/' Input_file

在上述代码中添加-i标志,以防您要将输出保存到Input_file本身中。另外,我的代码还将捕获字符串#define IMAX所在行末尾的所有数字,因此,如果您只想查找8000或将[0-9]+$更改为{然后使用上述代码中的{1}}等。

答案 1 :(得分:1)

我会做类似的事情:

sed -i '' '/^#define IMAX 8000$/s/8000/NEW_NUMBER/' 1d_Euler_mpi_test.c

答案 2 :(得分:0)

您可以使用GNU sed。

sed -i -e 's/IMAX 8000/IMAX 9000/g' /tmp/file.txt

由于-i选项,将调用sed进行就地编辑。可以从bash调用。

如果您真的只想使用bash,则可以使用以下方法:

while read a ; do echo ${a//IMAX 8000/IMAX 9000} ; done < /tmp/file.txt > /tmp/file.txt.t ; mv /tmp/file.txt{.t,}

这会循环遍历每一行,进行替换,然后写入一个临时文件(不想破坏输入内容)。最后的举动只是暂时将其移至原始名称。