1

我似乎不记得如何使用通配符函数替换文档中的勾号。

这是data.txt:

 +40 46'N + 014 15'E
 +21 17'N -157  52'W

我想用 S 替换 ' 之后的所有内容。当我尝试时,sed 命令给了我错误:

 sed 's/'.*/S/g' data.txt > new.txt 

似乎搜索蜱并替换它们是 sed 的问题?任何帮助深表感谢。

4

3 回答 3

2

尝试逃避它:

sed 's/'\''.*/S/g' data.txt > new.txt 

或者使用双引号

sed "s/'.*/S/g" data.txt > new.txt 
于 2013-09-03T13:06:17.570 回答
2

试试这一行:

sed "s/'.*/S/" file

或者

sed 's/\x27.*/S/' file

避免转义单引号。

PS你不需要g旗帜。

于 2013-09-03T13:08:13.390 回答
2

有时引用'是不够的。你应该把它放在[].

sed "s/['].*/S/" data.txt

示例输出:

 +40 46S
 +21 17S

如果您实际上仅指之后的所有内容,则可以这样做:

sed "s/^\([^']*[']\).*/\1S/" data.txt

示例输出:

 +40 46'S
 +21 17'S

如果您只指每个实例旁边的字母:

sed "s/\([']\)[^[:space:]]\+/\1S/g" data.txt

输出:

 +40 46'S + 014 15'S
 +21 17'S -157  52'S
于 2013-09-03T13:09:16.840 回答