首頁>Linux>source

我在這裏找到了有趣的讨論,並尝試了 sed提供的解決方案

How to insert a text at the beginning of a file?

https://stackoverflow.com/a/9533736/13353532

它適用於普通文字,但不適用於將文字儲存在變數中的情况。

[email protected]:~$ cat file.txt 
1
2
3
[email protected]:~$

添加文字( <added text> )到檔案的開頭

[email protected]:~$ sed -i '1s/^/<added text>\n/' file.txt
[email protected]:~$

有效!

[email protected]:~$ cat file.txt 
<added text>
1
2
3
[email protected]:~$

但是,当我尝試使用變數時,它不再起作用了。

[email protected]:~$ var='Text 1'
[email protected]:~$ echo $var
Text 1
[email protected]:~$ 
[email protected]:~$ cat file.txt 
1
2
3
[email protected]:~$ sed -i '1s/^/"$var"\n/' file.txt
[email protected]:~$ cat file.txt 
"$var"
1
2
3
[email protected]:~$

代替 "$var" ,我怎麼稱呼 $var的實際value 在 sed 命令?

最新回復
  • 5月前
    1 #

    問题是您有-按照建議-封闭了 sed 單引號說明 ' ... ' .但是,在單引號內包含變數擴充套件,例如 $var 被禁用,该表達式保持逐字記錄。

    作為解決方案,您可以將說明用双引號引起来:

    sed -i "1s/^/$var\n/" file.txt
    

    但是請註意,我建議為此目的使用"插入"命令:

    sed -i "1i $var" file.txt
    

    將插入 $var的內容 在第1行之前。

  • bash:根据列的一部分拆分CSV檔案
  • find:遞迴地删除所有檔案+檔案夹,但solaris中的特定檔案除外