簡體   English   中英

pipe output 的 grep 作為 ZD574D4BB40C84861791A694AZ 腳本的參數

[英]pipe output of grep as an argument to a bash script

script.sh將兩個文件作為 arguments,並調用 python 腳本打開它們並對這些文件進行進一步處理:

script.sh file1.txt file2.txt

我想從 file1.txt 中刪除所有以 # 開頭的行。

grep -v '^#' file1.txt

我嘗試了以下方法,但失敗了:

script.sh $(grep -v '^#' file1.txt) file2.txt

如何將 pipe 的 grep 的 output 作為 script.sh 的第一個文件參數?

script.sh <(grep -v '^#' file1.txt) file2.txt

您擁有的命令替換$()將從 grep 命令逐字插入 output 作為 arguments 到script.sh 相反,引用 bash 手冊頁:

進程替換允許使用文件名引用進程的輸入或 output。 它采用 <(list) 或 >(list) 的形式。 進程列表異步運行,其輸入或 output 顯示為文件名。 作為擴展的結果,此文件名作為參數傳遞給當前命令。

如果使用 <(list) 形式,則應讀取作為參數傳遞的文件以獲得列表的 output。

因此,我的理解是,當您使用$()時,您的 grep 命令的 output 將替換為最終語句,結果如下:

script.sh contents of file1 without comments \n oops newline etc file2.txt

但是,當您使用<()時,將運行 grep 命令,並且 output 進入名為 pipe 或臨時文件或其他等效文件的名稱中,因此將“你的文件”的名稱替換為的線

script.sh /dev/fd/temp_thing_containing_grep_results file2.txt

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM