将模式的奇数和偶数替换为另一个相同的模式
有一个场景,用除以 2 时的商数替换偶数和奇数出现的反斜杠。
For example
Input: (15 backslashes)
\\\
output: (7 backslashes)
\
Input: (14 backslashes)
\\\
output: (7 backslashes)
\
我尝试使用 sed 命令,该命令适用于 4 个反斜杠到 2 个。
sed 's/\//g'
如果有帮助,不胜感激。
回答
你可以试试这个awk:
cat file
\\\
\\\
# using awk
awk '{print substr($0, 1, int(length($0)/2))}' file
\
\
回答
另一种sed解决方案:
$ cat ip.txt
\\
\
\
\
\
$ sed -E 's/(+)1?/1/g' ip.txt
\
(+)1? 将平均划分反斜杠,最后的可选匹配将消耗最后一个反斜杠的奇数情况。
如果应删除单个反斜杠而不是保留,请使用
sed -E 's/((+)2)??/2/g'