我想它來檢測FILE_1以下模式的sed:使用正則表達式
STRING_1 : "STRING_2"
並追加STRING_2至FILE_2
這就是我現在所擁有的:
sed 's/STRING_1\s*:\s*"\([^"]*\)"/\1/g' FILE_1 >> FILE_2;
但這不起作用,它會向FILE_2附加大量隨機內容(不應該匹配)。不知道我做錯了什麼......
我想它來檢測FILE_1以下模式的sed:使用正則表達式
STRING_1 : "STRING_2"
並追加STRING_2至FILE_2
這就是我現在所擁有的:
sed 's/STRING_1\s*:\s*"\([^"]*\)"/\1/g' FILE_1 >> FILE_2;
但這不起作用,它會向FILE_2附加大量隨機內容(不應該匹配)。不知道我做錯了什麼......
有點冒險回答改變問題規範,但...
perl -ne 'print "$1\n" if (/.*STRING_1\s*:\s*\"([^"]*)\".*/)' FILE_1 >> FILE_2
似乎做工精細
如果STRING_1
之前的文字和STRING_2
後,它會不會與當前的正則表達式刪除,因此將獲得附加到FILE_2
。
爲了解決這個問題,在開始和你目前的圖案的末尾添加.*
:
sed 's/.*STRING_1\s*:\s*"\([^"]*\)".*/\1/g' FILE_1 >> FILE_2;
^^ ^^
這意味着你的正則表達式不起作用。給我們一些你輸入的樣本。 – codaddict 2010-12-11 03:31:48
將其改爲:
sed 's/.*STRING_1\s*:\s*"\([^"]*\)".*/\1/g' FILE_1 >> FILE_2;
,但它仍然附加整個文件,而不是正則表達式匹配
使用sed -n
如果你不想sed
輸出都默認爲每一行和p
修改打印匹配的結果。
sed -n -e 's/foo/bar/gp' FILE_1 >> FILE_2
你可以給出一個輸入例子,它失敗了嗎? – codaddict 2010-12-11 02:45:58