如何在linux中使用包含特定数字或字符串的sed或awk编辑一行

时间:2012-06-12 15:45:03

标签: linux sed awk line edit

我的Stress.k文件如下

180.4430
*INCLUDE
$# filename
*STRESS_INITIALIZATION 
*END

我希望它像

180.4430
*INCLUDE
$# filename
*STRESS_INITIALIZATION 
*/home/hassan/534.k 
*END

因为我使用sed如下

a="$(cat flow.k)"
sed  -i -e '/*END/i \*/home/hassan/$a.k ' Stress.k

其中flow.k只有一个数字,如534.k或其他东西。这里sed将行放在END之前,但它不取a的值,而是使用相同的字母表,但它不理解$a.k

还请告诉我如何删除最后一行或带有字符串hassan的行,以便我可以先将其删除,然后在下一步中使用它来输入我需要的行。

如果可能请另外建议。

最好的问候

2 个答案:

答案 0 :(得分:1)

只有在双引号中才会替换

bash变量,例如

sed  -i -e "/*END/i \*/home/hassan/$a.k " Stress.k

答案 1 :(得分:0)

使用双引号允许扩展变量。

sed  -i -e "/*END/i \*/home/hassan/$a.k " Stress.k

要替换字符串,请在阅读文件时执行以下操作:

a=$(sed 's/534/100/' flow.k)

删除一行:

sed '/hassan/d' inputfile

在当前行之后将文件读入流:

sed '/foo/r filename' inputfile