如何刪除分隔符號之前的文字?

如何刪除分隔符號之前的文字?

我需要幫助刪除文字檔案所有行中分隔符號);前後的文字。 |IE:

 SUBSCIBER_MSISDN=6289666195060');BEGIN DBMS_LOCK.SLEEP(5); END-- rKSy|

結果應該是這樣的

SUBSCIBER_MSISDN=6289666195060|

知道如何刪除該部分嗎?這是一個大文件。

如果我必須使用的話我會發瘋的sed

答案1

假設您顯示的是某個輸入檔中的完整行:

sed "s/'.*/|/" file >newfile

'這會將每行第一個字元之後的所有內容替換為一個|字元。結果將透過重新導向寫入新檔案。我在sed表達式周圍使用雙引號,因為單引號字串不能包含單引號字元。

給定範例數據,這會產生

 SUBSCIBER_MSISDN=6289666195060|

如果您還想從行首刪除空格(您的範例似乎是這樣做的):

sed -e "s/'.*/|/" -e 's/^[[:blank:]]*//' file >newfile

或者,

sed "s/'.*/|/; s/^[[:blank:]]*//" file >newfile

如果您厭惡sed,您可以使用awk進行完全相同的轉換:

awk '{ sub("'"'"'.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

時髦的外觀'"'"'是引用的單引號。它必須在構成awk程式碼的單引號字串之外加雙引號。我們也可以使用'\'',即

awk '{ sub("'\''.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

或者,您可以使用八進位 ASCII 代碼作為單引號字元:

awk '{ sub("\047.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

相關內容