簡體   English   中英

bash中的cut命令終止於引號

[英]cut command in bash terminating on quotation marks

因此,我試圖讀取一個文件,該文件包含一串帶有電子郵件地址的行,然后是它們的昵稱。 我正在嘗試提取這個昵稱,該昵稱用括號括起來,如下所示

email@somewhere.com (Tom)

所以我的想法僅僅是使用cut來獲得Tom這個詞,但是當我最終得到類似以下內容的東西時,這被挫敗了

email2@somewhereElse.com ("Bob")

由於Bob周圍帶有引號,所以cut命令失敗,如下所示

cut: <file>: Illegal byte sequence

有人知道這樣做的更好方法嗎? 或解決此問題的方法?

將您的locale重置為C (原始的未解釋字節序列),以避免Illegal byte sequence錯誤。

locale charmap
LC_ALL=C cut ... | LC_ALL=C sort ...

我覺得

grep -o '(.*)' emailFile 

應該這樣做。 “遍歷文件中的所有行。尋找一個以開括號開頭的序列,然后是任何字符,直到閉括號為止。將與字符串匹配的位回顯到stdout。”

這樣會保留昵稱周圍的引號...以及方括號。 如果您不想要這些,可以將它們剝離:

grep -o '(.*)' emailFile | sed 's/[(")]//g'

(“將方括號之間的任何字符替換為無處無處”)

perl -lne '$_=~/[^\(]*\(([^)]*)\)/g;print $1'

在這里測試

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM