仅替换字符串中首次出现的管道字符



我需要在带有sed的管道分隔的csv文件的头行末尾删除一个额外的管道字符。我试图查找的文字字符串是COLNAME|

在GCP Windows服务器上工作。我尝试使用的命令:

"C: \Program Files(x86(\GnuWin32\bin\sed.exe"sed‘0,/COLNAME"|"s//COLNAME/'文件名

返回输出。。。sed.exe:-e表达式#1,字符3:未终止的"s"命令

我是sed的新手,使用s命令已经有一段时间了,但似乎无法获得正确的语法。

关于如何做到这一点,有什么建议吗?

如果您想在Windows中用COLNAME"|"替换COLNAME|,使用GNUsed,您可以使用

"C:Program Files (x86)GnuWin32binsed.exe" "s/COLNAME|/COLNAME"^""|"^""/g"

这里,COLNAME|COLNAME|匹配,COLNAME"^""|"^""形成文字COLNAME"|"替换,因为COLNAME"结束引用的字符串,^"将文字"字符附加到sed命令,"|"|字符附加到ed命令,然后^"将另一文字"附加到sed命令,并且下一个"开始完成部分。g标志使其匹配并替换所有出现的内容。

如果您想在Windows中使用GNUsedCOLNAME"|"替换为COLNAME,可以使用

"C:Program Files (x86)GnuWin32binsed.exe" "s/COLNAME"^""|"^""/COLNAME/g" FILENAME
"C:Program Files (x86)GnuWin32binsed.exe" "s/COLNAMEx22|x22/COLNAME/g" FILENAME
"C:Program Files (x86)GnuWin32binsed.exe" "s/COLNAMEd34|d34/COLNAME/g" FILENAME

请注意,您需要用双引号将替换命令括起来,并且要匹配双引号,您不能简单地使用"",您可以将其与转义的^"x22(字符的十六进制表示(或d34进行匹配。

请注意,在"s/COLNAME"^""|"^""/COLNAME/g"中,sed命令是以以下方式构建的:

  1. "s/COLNAME"设置开始
  2. ^"向sed命令添加文字"字符
  3. "|"-添加|管道字符
  4. ^"-添加另一个"
  5. "/COLNAME/g"-使用替换和全局修饰符/标志结束sed命令

相关内容

  • 没有找到相关文章

最新更新