echo 'abc' | grep input.txt
這會返回'找不到文件abc'。
我想要做的就是用abc找到所有的所有行。 我知道我可以簡單地寫管道作爲命令的第一個輸入
grep abc input.txt
但如果我想管道輸入到grep?
echo 'abc' | grep input.txt
這會返回'找不到文件abc'。
我想要做的就是用abc找到所有的所有行。 我知道我可以簡單地寫管道作爲命令的第一個輸入
grep abc input.txt
但如果我想管道輸入到grep?
你應該寫:
grep "abc" input.txt
如果你想管它:
cat input.txt | grep "abc"
這是可能的:
grep "$(command)" input.txt
OR
grep `command` input.txt
所以,如果你想使用echo
命令做到這一點:
grep "$(echo abc)" input.txt
OR
grep `echo abc` input.txt
你也可以這樣寫:
var="abc" && grep `echo $var` input.txt
OR
var="abc" && grep $(echo $var) input.txt
和你一起學習貓的無用用... –
目標是讓'abc'在這種情況下以編程方式生成,所以這個答案不是很明顯。 –
管道答案就是我們的朋友想要的......而且我還在頂部使用了簡單的答案///如你所知,有很多解決方案...... – MLSC
您可以使用
cat input.txt | grep abc
grep然後在管道輸入內搜索'abc'。
對於動態搜索模式可以使用
grep $(<command>) input.txt
與<command>
是輸出所述搜索模式的命令。
我有一些命令讓模式變爲grep。我想先運行這些命令,然後使用grep來grep input.txt中的模式。在運行命令之前,我不知道該模式是什麼。 abc只是一個例子。我想管'ABC'部分,但不是他的文件名。 – user2922049
可以使用變量:
var="abc" && grep "$var" input.txt
我假設你的關鍵字abc
了另一個命令,那麼你也可以運行
grep "$(command)" input.txt
例如在你上面的例子中,那將是
grep "$(echo 'abc')" input.txt
需要更多的引號,否則'command'的輸出將被分詞,並且除了第一個字以外的所有字都將被視爲文件名。 –
謝謝。現在已經修復了。 – pfnuesel
我想這個問題是因爲你有一個關鍵字列表在同一個文件中搜索。以下是你可能會去的一種方式:
$ cat sought_words
include
return
int dot
blah
$ cat sought_words | while read line; do echo "searching for" $line; grep -n "$line" stack_dots2.c; done
searching for include
1:#include <stdio.h>
2:#include <stdlib.h>
3:#include <string.h>
searching for return
20: return 1;
28: return 0;
searching for int dot
8: int dotless_length = 30;
searching for blah
grepping爲"$line"
,而不是僅僅$line
允許發現int dot
包括空間,而不是解釋dot
爲另一個文件名中搜索int
對於每個關鍵字運行單獨的grep並不完全有效,因爲它們都可以通過一次完成。 –
以下將讀取的內容,搜索從標準輸入:
grep -e "$(cat)" input.txt
因此,您所要求的行爲:
echo "abc" | grep -e "$(cat)" input.txt
...會正常工作。那就是說,你能描述一下用例嗎?可能有更好的方法來完成你想要完成的任務。
好的 - 在其他地方的評論中澄清了用例。使用正確的工具是不是一個管道,但命令替換:
grep -e "$(commands-to-get-the-pattern)" input.txt
第一個命令不適合我,子shell只是抱怨:'-bash:cat:沒有這樣的文件或目錄。我認爲你不需要那裏的'<',只是'「$(cat)」'。 – IMSoP
@IMSoP你完全正確;我確實想要'$(貓)'。 –
你能解釋爲什麼* *你想這樣做?這是可能的,但適當的技術取決於推理。 –
爲了節省不同答案上的重複,我會在這裏澄清一下:你是否說你想要運行的命令動態生成模式,並且你想檢查一個文件來對付這些模式? – IMSoP
爲了保存不同答案的重複,我會在這裏澄清一下:你是說你想要運行的命令動態生成模式,並且你想檢查一個文件來對付這些模式?是! – user2922049