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