[英]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.