編寫一個輸出包含特定文字的檔案名稱和行號的腳本

編寫一個輸出包含特定文字的檔案名稱和行號的腳本

如何編寫一個(bash)腳本來掃描資料夾中所有 .tex 檔案是否出現\todo,並輸出出現的檔案名稱和行號?

到目前為止我得到了什麼:

#!/bin/bash
for texfile in *.tex ; do
  **Scan for \todo**
  **output $textfile$ , linenumber**
done

我想確保我的 .tex 檔案\todo{sometext} 在交付時不包含這些內容。

它不一定是 bash,我只是為了簡單起見才選擇它。 Grep 等肯定會受到歡迎。

答案1

grep可以自己完成此操作,如果需要,您可以將其包裝在腳本中:

grep -nr '\todo' *.tex

-r用於遞歸 -n顯示文件中的行號

預設情況下,grep 將顯示包含匹配項的行。對於某些格式,這可能意味著大量輸出。如果您想限制輸出,以便只獲得匹配項和兩側的幾個字符,請使用以下命令:

egrep -nor '.{0,20}\\todo.{0,20}'  *.tex

意思-o是“僅顯示匹配結果”,但是,這只會顯示\todo。為了獲得一些上下文,我們允許匹配項兩側最多 20 個任意數量的字元。匹配.任何內容,並且{0,20}重複此匹配最多 20 個字元。

相關內容