繁体   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