我有「exp正則表達式」行的文件。該文件可以包含其他文本的行。例如:作爲grep的正則表達式的文件內容
exp [a-zA-Z].*\.sh~$
exp test
tmp too
exp tmp
trololo
我需要到grep這個文件的內容與egrep file '^exp ' | sed 's/^exp //'
結果的是這樣的:
[a-zA-Z].*\.sh~$
test
tmp
但我需要這個grep的結果通過分離|而不是\ n
[a-zA-Z].*\.sh~$|test|tmp
因爲我需要使用此結果作爲另一個grep正則表達式。例如打印嵌套grep匹配的文件:
ls | egrep "`egrep file '^exp ' | sed 's/^exp //'\`"
nested grep | sed替代
ls | egrep "[a-zA-Z].*\.sh~$|test|tmp"
或者有更好的方法從文件中導出正則表達式並將它們用於過濾器文件?
肯特:我怎麼能用這個來取代?我認爲它是:
ls | egrep "`awk '/^exp /{sub(/^exp /,"");s=(s?s"|":s) sprintf("%s",$0)}END{print s}' file`"
但我相當錯誤。
's =(s?s「|」:s)'是什麼意思?三元操作符? oO – 2013-03-17 16:22:30
太好了,但現在我在替換中出現問題'' ls | egrep -v「'awk'/^exp/{sub(/^exp /,」「); s =(s?s」|「:s)sprintf(」%s「,$ 0)} END {print s} ''「 :s)sprintf(%s,bash)} END {print s}'.config':command not found 你知道是什麼造成了這種情況嗎? – 2013-03-17 16:29:53
@sputnick它是一個簡短的版本:'如果s不是空的{use s itself +「|」 } else {使用s本身,它是空的}' – Kent 2013-03-17 16:31:16