0

我的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

whereflow.k只有一个数字,例如 534.k 或 something 。这里 sed 将行放在前面,END但它不采用 a 的值,而是放置相同的字母并且它不理解$a.k

还请告诉我如何删除倒数第二行或带有字符串 hassan 的行,以便我可以先删除它,下一步我用它来输入我需要的行。

如果可能,还请提出替代方案。

此致

4

2 回答 2

1

bash 变量仅在双引号中被替换,例如

sed  -i -e "/*END/i \*/home/hassan/$a.k " Stress.k
于 2012-06-12T15:51:42.217 回答
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
于 2012-06-12T16:39:41.383 回答