在 shell 中使用撇号查找和转义名称
Find and escape names with apostrophe in shell
我有一个用户名列表,如下所示:
调用 StoredProcedure('O'Rielly@ysol-test.net');
调用 StoredProcedure('Mark@ysol-test.net');
调用 StoredProcedure('James@ysol-test.net');
如您所见,有些名称中有撇号,有些则没有。
在 Shell 中,如果出现超过 2 次,我希望能够找到并转义一行中第二次出现的撇号。
我已经设法使用 SED 删除了所有出现的地方,但我在这里画了一个空白。
如有任何帮助,我们将不胜感激。
I want to be able to find and escape the second occurrence of an apostrophe on a line IF there are more than 2 occurrences.
这非常简单:
sed "/'[^']*'[^']*'/s/'/\\'/2"
/'[^']*'[^']*'/
- 如果该行与此正则表达式匹配三个 '
s
- 替换
'
- 撇号
\\'
- \'
。请注意,我们在双引号内。所以首先双引号将 \\
更改为 \
然后 sed 将 \
更改为 \
.
2
仅出现第二次。
我有一个用户名列表,如下所示:
调用 StoredProcedure('O'Rielly@ysol-test.net');
调用 StoredProcedure('Mark@ysol-test.net');
调用 StoredProcedure('James@ysol-test.net');
如您所见,有些名称中有撇号,有些则没有。
在 Shell 中,如果出现超过 2 次,我希望能够找到并转义一行中第二次出现的撇号。
我已经设法使用 SED 删除了所有出现的地方,但我在这里画了一个空白。
如有任何帮助,我们将不胜感激。
I want to be able to find and escape the second occurrence of an apostrophe on a line IF there are more than 2 occurrences.
这非常简单:
sed "/'[^']*'[^']*'/s/'/\\'/2"
/'[^']*'[^']*'/
- 如果该行与此正则表达式匹配三个'
s
- 替换'
- 撇号\\'
-\'
。请注意,我们在双引号内。所以首先双引号将\\
更改为\
然后 sed 将\
更改为\
.2
仅出现第二次。