我試圖在當前目錄中運行ack,並將關鍵字設置爲文本文件的每一行,並且我在命令行上嘗試了以下命令:Shell命令遍歷文本文件的每一行
cat ~/temp/imageFileNames.txt | while read line; do ack "$line"; done
但是,根本沒有輸出,即使每條線都單獨產生輸出,如果我手動運行ack。 這個命令有什麼問題?
我試圖在當前目錄中運行ack,並將關鍵字設置爲文本文件的每一行,並且我在命令行上嘗試了以下命令:Shell命令遍歷文本文件的每一行
cat ~/temp/imageFileNames.txt | while read line; do ack "$line"; done
但是,根本沒有輸出,即使每條線都單獨產生輸出,如果我手動運行ack。 這個命令有什麼問題?
ack
對整個文件逐行進行處理。爲此,只需要:
ack "$line" ~/temp/imageFileNames.txt
它應該打印出所有包含「$ line」的行。檢查文檔以獲得更好的使用說明,我可以給出:http://linux.die.net/man/1/ack
好吧,我明白你的意思了......抱歉讓你困惑,但這不是我的意思。基本上我需要在當前目錄中的所有子目錄上運行確認,通常我會用「關鍵字」確認。但是,我需要多次運行此命令,因爲我需要在整個工作區中搜索不同的關鍵字。我沒有試圖在一個文件中搜索單個關鍵字。相反,所有這些關鍵字都存儲在一個文本文件中,我需要在當前目錄的所有子目錄中查找每個關鍵字。 – SeaJelly
我會使用'grep -r'(遞歸搜索):http://blamcast.net/文章/遞歸的grep找到的弦-文件。對於這樣的問題,我會去檢查http://superuser.com/或http://unix.stackexchange.com/。 SO更適合編寫程序,那些人知道bash要好得多。 – SlightlyCuban
爲什麼要逐行運行'ack',而不是直接在文件上運行:'ack「$ line」〜/ temp/imageFileNames.txt '? – SlightlyCuban
嗨,非常感謝,我不知道ack可以帶入一個文本文件並遍歷每一行並在每一行中運行確認。不過,我試過了,但不知何故,它在屏幕上打印出整個文件。 「$ line」是否會自動獲取文件中的每一行? – SeaJelly
我其實不太熟悉''[ack](http://linux.die.net/man/1/ack)',只是Linux;)。由於聊天更適合這種來回,我會用答案更新這個問題,如果你有其他問題,請再次提問:) – SlightlyCuban