Linux   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么我不能在awk中使用字符串“?B?”作为分隔符.大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

通过运行以下我得到的结果字符串“utf-8” 我以用这个命令我会把字符串“tralala”返回 echo "=?utf-8?B?tralala" | awk -F "?B?" '{print $2 }' 这是为什么? @R_856_10675@用什么分隔符来获取字符串“tralala”? awk分隔符不是字符串,它们是“字段分隔符”(因此变量名为FS),它是一种具有一些附加功能的扩展正则表达式(例如,当不在方括号
通过运行以下我得到的结果字符串“utf-8”
我以用这个命令我会把字符串“tralala”返回

echo "=?utf-8?B?tralala" | awk -F "?B?" '{print $2 }'

这是为什么?
@R_856_10675@用什么分隔符来获取字符串“tralala”?

解决方法

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

但恕我直言,最好还是为了清晰和面向未来而做到这一点.

大佬总结

以上是大佬教程为你收集整理的为什么我不能在awk中使用字符串“?B?”作为分隔符.全部内容,希望文章能够帮你解决为什么我不能在awk中使用字符串“?B?”作为分隔符.所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。