我一直在學習關於sed並發現它非常有用,但無法在許多指南和示例中找到答案...我想插入文件名一個文本文件,將其路徑和擴展名減去文本本身內的特定行。可能?用sed將文件名插入文本文件
-2
A
回答
1
在這種情況下,正確的起點應該是手冊頁。 sed手冊沒有提供sed功能來理解「文件名」,但sed確實支持在一行之前/之後插入文本。
因此,您需要單獨隔離文件名,將文本存儲到一個變量並在您希望的行之前/之前插入此文本。
實施例:
$ a="/home/gv/Desktop/PythonTests/cpu.sh"
$ a="${a##*/}";echo "$a"
cpu.sh
$ a="${a%.*}"; echo "$a"
cpu
$ cat file1
LOCATION 0 X 0
VALUE 1a 2 3
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2a $a" file1 # Inject the contents of variable $a after line2
LOCATION 0 X 0
VALUE 1a 2 3
cpu
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2i $a" file1 # Inject the contetns of variable $a before line2
LOCATION 0 X 0
cpu
VALUE 1a 2 3
VALUE 1b 2 3
VALUE 1c 2 3
$ sed "2a George" file1 #Inject a fixed string "George" after line 2
LOCATION 0 X 0
VALUE 1a 2 3
George
VALUE 1b 2 3
VALUE 1c 2 3
說明:
a="${a##*/}"
:移除從字符串的開頭的所有字符最多持續發現斜線/(更長的匹配)
a="${a%.*}"
:刪除的結束開始的所有字符串到第一個找到的點。 (短賽)。您也可以使用%%找到最長的點。
sed "2a $a"
:2號線變量的內容後插入美元
sed "2i $q"
:插入線2之前的$一個
可選擇使用sed -i
使下過程就地/修改文件內容
1
和I've been learning about sed
那麼你可能一直在浪費你的時間,因爲沒有太多的東西要學習關於sed超越s/old/new
。當然,還有很多其他的語言結構和你可以用sed做的事情,但實際上你應該避免使用它們,而只是簡單地使用awk。如果您編輯問題以包含簡潔,可測試的示例輸入和預期輸出並添加awk標籤,那麼我們可以向您展示如何以正確的方式執行任何操作。
同時,這聽起來像你需要的是:打開的文件的第3行前
$ cat /usr/tmp/file
a
b
c
d
e
$ awk 'NR==3{print gensub(/.*\//,"",1,FILENAME)} 1' /usr/tmp/file
a
b
file
c
d
e
上面插入當前文件的名稱。它使用GNU awk for gensub(),其他awk只使用sub()和變量。
相關問題
- 1. 將文本插入到shell中的Sed文件中
- 2. 將文本+管道命令插入到sed文件中
- 3. 將字符串插入文件sed
- 4. 在文本框中插入文件名
- 5. 使用sed從文本文件中刪除多個文件名
- 6. 使用的sed插入文件內容
- 7. 用戶選擇文件名並將文件名寫入文本文件[Python]
- 8. 將行插入非文本文件
- 9. 將文本插入文件 - bash
- 10. 將數據插入文本文件python
- 11. 如何將文本插入conf文件?
- 12. 將數據插入文本文件
- 13. 在文件開頭插入文件可能使用SED
- 14. 插入文本文件
- 15. 如何使用sed將文本插入到文件的第一行?
- 16. 使用文本文件將文件名添加到列導入
- 17. 使用批量插入將文本文件插入Oracle
- 18. 插入文本文件sed中的一行中間
- 19. 在文本文件中插入一個帶有sed的單詞
- 20. 使用PowerShell基於文件名將數據插入文件
- 21. 如何使用bat將文本文件的名稱寫入文本文件?
- 22. 插入文件內容的sed
- 23. 插入文本使用的sed?
- 24. 使用PHP將WordPress插件寫入文本文件
- 25. 用PHP插入文本文件到MySQL
- 26. 編輯文本文件用awk/sed的
- 27. 使用sed來從文本文件
- 28. 將csv文件讀入文本文件
- 29. 需要將文件名寫入文本文件
- 30. 將文件名批量寫入文本文件
我建議提供有關環境的更多信息。我通過shell變量替換預測解決方案建議。所以請說明你正在使用的外殼類型。其他信息也許可以幫助,也許諮詢(http://stackoverflow.com/help/mcve)。 – Yunnosch
是的,對不起。 Linux Ubuntu 16.04.2和GNU sed 4.2.2 – raysa