sed通配符搜索tick(')并替换

时间:2013-09-03 13:05:18

标签: bash sed

我似乎无法记住如何使用通配符函数替换文档中的刻度。

这是data.txt:

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

我想在'with S.之后替换所有内容。当我尝试时,sed命令会给我错误:

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

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

3 个答案:

答案 0 :(得分:2)

尝试转义它:

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

或使用双引号

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

答案 1 :(得分:2)

试试这一行:

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

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

避免单引号。

P.S。您不需要g标志。

答案 2 :(得分: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
相关问题