我有这样的数据
"Apple grape","Banana"orange","Red green"
"Apple grape","Bananaorange","Red green"我想使用"或sed命令删除Banana和orange之间的单个awk引号。
发布于 2021-03-02 12:06:19
sed 's/\([^,]\)"\([^,]\)/\1\2/g' file这将取代所有不重叠的非逗号序列([^,]),双引号和非逗号,用相同的东西,但没有双引号。
这不会处理模式在重叠子字符串上匹配的情况,例如,...""...和..."."...。我现在还不清楚这些情况是否会发生在用户的数据中。运行两次替换将解决这些情况。
输出是在终端上产生的,所以如果要保存文件,请重定向到它。
发布于 2021-03-02 19:21:35
假设您的字段中没有逗号或换行符,并且您的所有字段都是双引号(如您的示例所示),那么在每个Unix框的任何shell中使用任何sed:
$ sed 's/"//g; s/,/","/g; s/.*/"&"/' file
"Apple grape","Bananaorange","Red green"发布于 2021-03-02 12:20:28
你可以试试这个:
$ sed 's/"\([^,"]*\)"\([^,"]*\)"/"\1\2"/g' foo.txt
"Apple grape","Bananaorange","Red green"
"Apple grape","Bananaorange","Red green"https://unix.stackexchange.com/questions/637152
复制相似问题