![如何刪除分隔符號之前的文字?](https://rvso.com/image/168776/%E5%A6%82%E4%BD%95%E5%88%AA%E9%99%A4%E5%88%86%E9%9A%94%E7%AC%A6%E8%99%9F%E4%B9%8B%E5%89%8D%E7%9A%84%E6%96%87%E5%AD%97%EF%BC%9F.png)
我需要幫助刪除文字檔案所有行中分隔符號);
前後的文字。 |
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