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

where にflow.kは 534.k などの単一の番号しかありません。ここで sed は行を前に置きENDますが、 a の値を取りません。代わりに、同じアルファベットを置き、理解していません$a.k

また、最後の 2 行目または文字列 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 に答える