我需要在带有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中使用GNUsed
将COLNAME"|"
替换为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命令是以以下方式构建的:
"s/COLNAME"
设置开始^"
向sed命令添加文字"
字符"|"
-添加|
管道字符^"
-添加另一个"
"/COLNAME/g"
-使用替换和全局修饰符/标志结束sed命令