为什么我不能在awk中使用字符串“?B?”作为分隔符.
发布时间:2020-12-14 00:31:06 所属栏目:Linux 来源:网络整理
导读:通过运行以下我得到的结果字符串“utf-8” 我以为用这个命令我会把字符串“tralala”返回 echo "=?utf-8?B?tralala" | awk -F "?B?" '{print $2 }' 这是为什么? 我应该使用什么分隔符来获取字符串“tralala”? 解决方法 awk分隔符不是字符串,它们是“字段
通过运行以下我得到的结果字符串“utf-8”
我以为用这个命令我会把字符串“tralala”返回 echo "=?utf-8?B?tralala" | awk -F "?B?" '{print $2 }' 这是为什么? 解决方法
awk分隔符不是字符串,它们是“字段分隔符”(因此变量名为FS),它是一种具有一些附加功能的扩展正则表达式(例如,当不在方括号内时,单个空白字符作为字段分隔符意味着全部分开连续的白色空间链,并忽略每个记录上的前导和尾随空白区域).
字符串,正则表达式和字段分隔符之间的区别非常重要.您有时也会看到使用“模式”一词 – 不使用该术语,它没有(或太多可能)含义. 一个 ?是一个RE元字符,所以你需要告诉awk不要在你的情况下通过以下任何一种方法处理它: $echo "=?utf-8?B?tralala" | awk -F '[?]B[?]' '{print $2}' tralala $echo "=?utf-8?B?tralala" | awk -F '?B?' '{print $2}' tralala 你不是第一次要严格要求吗?因为当它是RE中的第一个字符时,它的元字符功能不适用: $echo "=?utf-8?B?tralala" | awk -F '?B[?]' '{print $2}' tralala $echo "=?utf-8?B?tralala" | awk -F '?B?' '{print $2}' tralala 但恕我直言,最好还是为了清晰和面向未来而做到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |