我当前正在尝试在文件中查找行
layout-sw360dp-w740dp-xxxhdpi
,然后用另一个数字替换8000。
目前,在尝试将参数从awk传递到sed时一直停留。
#define IMAX 8000
不太确定如何从这里继续。
答案 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,}
这会循环遍历每一行,进行替换,然后写入一个临时文件(不想破坏输入内容)。最后的举动只是暂时将其移至原始名称。