加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

仅使用bash/standard Linux命令,在字符串中单行和双引号

发布时间:2020-12-15 19:10:37 所属栏目:安全 来源:网络整理
导读:我正在寻找一些可以如下转换字符串的东西,只使用bash / standard Linux命令: 字符串周围的单引号应该被删除 应该删除字符串周围的双引号 未引用的字符串应该保持不变 具有无与伦比的周边报价的字符串应保持不变 不要包围字符串的单引号应该保留 不要包围字
我正在寻找一些可以如下转换字符串的东西,只使用bash / standard Linux命令:

>字符串周围的单引号应该被删除
>应该删除字符串周围的双引号
>未引用的字符串应该保持不变
>具有无与伦比的周边报价的字符串应保持不变
>不要包围字符串的单引号应该保留
>不要包围字符串的双引号应该保留

例如:

“食物”应该成为食物
>“食物”应该成为食物
食物应该保持不变
>“食物”应该保持不变
>“食物”应该保持不变
福尔多应该成为福音
>“Fo’od”应该成为Fo’od
Fo’od应该保持不变
“Fo”od“应该成为Fo”od
>“Fo”od“应该成为Fo”od
Fo“od应该保持不变

谢谢!

这应该做到:
sed "s/^(["'])(.*)1$/2/g" in.txt

其中in.txt是:

"Fo'od'
'Food'
"Food"
"Fo"od'
Food
'Food"
"Food'
'Fo'od'
"Fo'od"
Fo'od
'Fo"od'
"Fo"od"
Fo"od

而expected.txt是:

"Fo'od'
Food
Food
"Fo"od'
Food
'Food"
"Food'
Fo'od
Fo'od
Fo'od
Fo"od
Fo"od
Fo"od

您可以检查它们是否匹配:

diff -s <(sed "s/^(["'])(.*)1$/2/g" in.txt) expected.txt

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读