首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将模式的奇数和偶数替换为另一个相同的模式

将模式的奇数和偶数替换为另一个相同的模式
EN

Stack Overflow用户
提问于 2021-07-28 09:15:41
回答 5查看 209关注 0票数 2

有一个场景,当除以2时,将反斜杠的偶数和奇数替换为商数。

代码语言:javascript
复制
For example
Input: (15 backslashes)
\\\\\\\\\\\\\\\
output: (7 backslashes)
\\\\\\\

Input: (14 backslashes)
\\\\\\\\\\\\\\
output: (7 backslashes)
\\\\\\\

我尝试使用sed命令,它可以处理4个反斜杠到2. sed 's/\\\\/\\/g'

如果有什么帮助的话。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2021-07-28 11:11:25

另一个sed解决方案:

代码语言:javascript
复制
$ cat ip.txt
\\\\\\\\
\\\\\\\
\\\\\\
\\\\\
\\\\
\\\
\\
\
$ sed -E 's/(\\+)\1\\?/\1/g' ip.txt
\\\\
\\\
\\\
\\
\\
\
\
\

(\\+)\1\\?将均分反斜杠,最后的可选匹配将对奇数情况使用最后的反斜杠。

如果应该删除单个反斜杠而不是保存,请使用

代码语言:javascript
复制
sed -E 's/((\\+)\2)?\\?/\2/g'
票数 4
EN

Stack Overflow用户

发布于 2021-07-28 10:42:38

你可以试试这个awk

代码语言:javascript
复制
cat file

\\\\\\\\\\\\\\\
\\\\\\\\\\\\\\

# using awk
awk '{print substr($0, 1, int(length($0)/2))}' file

\\\\\\\
\\\\\\\
票数 5
EN

Stack Overflow用户

发布于 2021-07-28 09:33:35

使用sed:在带有奇数\的行中,首先去掉最后一个。然后替换成对,就像你做的那样:

代码语言:javascript
复制
sed -r 's/((\\\\)*)(\\)?/\1/g;s/\\\\/\\/g'

演示:

代码语言:javascript
复制
$ cat foo.txt
\\\\
\\\
\\
$ sed -r 's/((\\\\)*)(\\)?/\1/g;s/\\\\/\\/g' foo.txt
\\
\
\
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68557593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档