我有幾百萬行,看起來像這樣。我正在尋找一種用「TABLENAME」替換這些行的方法。 「TABLENAME」每次都會有所不同。 「TABLENAME」總是在這一行。基本上我正在尋找將此路徑轉換爲「TABLENAME」。我的想法是尋找第五次出現的「」,並用sed替換它的整個行。 sed有這個能力嗎?先謝謝你。Sed一行並將其替換爲行中的內容
我行
path : /BLAH/BLAH1[(@name="BLAH2")]/BLAH/BLAH[(@BLAH="SERVER")]/BLAH[(@name="CHECK")]/sampler[(@name="SAMPLE")][(@type="")]/table[(@name="TABLENAME")]/rows/row[(@name="AROW")]/cell[(@column="ACELL")]
我想要的結果(輪到我行正下方的線)(我不能用sed替換路徑表名,因爲有時它可能是一個不同的表名,我不知道哪一個可能是)
TABLENAME
本來我可以用
sed -r "s/.*table\[\(@name=\"([A-Z]+).*/\1/" myfile
做到這一點爲s由另一個stackoverflower使用,但它看起來不起作用,因爲路徑之前有額外的8個空格。如果我刪除了8個空格,這個代碼就可以工作,但是由於我用java調用這個空間的方式,這些空間總是會在那裏。有沒有解決這個命令的工作?
前面的空格不應該是你的問題,因爲它們會被模式中的第一個*所貪婪地匹配。所以這個正則表達式應該按照預期工作。 – toddlermenot 2014-10-09 18:26:20
表名可以包含小寫字母,數字,下劃線,任何其他特殊字符?你的正則表達式只是假設大寫字母;也許'[^「] +'會更好地爲您服務 – 2014-10-09 18:57:08