我正在寻找一些可以如下转换字符串的东西,只使用bash / standard Linux命令:
>字符串周围的单引号应该被删除
>应该删除字符串周围的双引号
>未引用的字符串应该保持不变
>具有无与伦比的周边报价的字符串应保持不变
>不要包围字符串的单引号应该保留
>不要包围字符串的双引号应该保留
例如:
“食物”应该成为食物
>“食物”应该成为食物
食物应该保持不变
>“食物”应该保持不变
>“食物”应该保持不变
福尔多应该成为福音
>“Fo’od”应该成为Fo’od
Fo’od应该保持不变
“Fo”od“应该成为Fo”od
>“Fo”od“应该成为Fo”od
Fo“od应该保持不变
谢谢!
这应该做到:
原文链接:https://www.f2er.com/bash/387556.htmlsed "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