Linux 使用sed替换不规则数量的斜杠(/)
我有一个带有多个斜杠(Linux 使用sed替换不规则数量的斜杠(/),linux,unix,sed,Linux,Unix,Sed,我有一个带有多个斜杠(/)的文件,并且这个数字不是唯一的。数据文件的部分如下所示: 输入文件 任何人请告诉我如何用未定义的值(9999)替换任意数量的斜杠(/)。我希望输出为 output.txt 使用sed: sed -r 's/^\/+$/9999/' input.txt > output.txt 将仅包含一个或多个/的行替换为9999/需要转义+表示一个或多个 使用awk: awk '{sub(/^\/+$/,"9999")}1' input.txt > output.txt
/
)的文件,并且这个数字不是唯一的。数据文件的部分如下所示:
输入文件
任何人请告诉我如何用未定义的值(9999)替换任意数量的斜杠(/
)。我希望输出为
output.txt
使用sed
:
sed -r 's/^\/+$/9999/' input.txt > output.txt
将仅包含一个或多个/
的行替换为9999
<代码>/需要转义<代码>+表示一个或多个
使用awk
:
awk '{sub(/^\/+$/,"9999")}1' input.txt > output.txt
您可以使用sed
sed 's/^\/\+$/9999/' file
啊,
您可以转义模式中的
/
(斜线或实线,请注意;反斜线或反实线看起来像\
),如其他答案所示,或者使用不同的字符标记替换的限制:
sed 's@//*@9999@'
sed 's@/\{1,\}@9999@'
或主题的其他变体。@
的使用是任意的;任何没有出现在正则表达式中的字符都可以简单地使用
perl -pi -e 's/^\/+$/9999/g'
请查找执行注意,
/
是斜杠<代码>\是反斜杠。你想和谁打交道?由于示例始终使用斜杠,我已将问题文本更新为采用斜杠而不是反斜杠。无需说$0~
,因为它是默认值awk'/^\/+$/{$0=“9999”}1'
就足够了。这将用foo9999
替换foo/
。我认为op不希望出现这种行为。这将用9999取代任何非零的斜杠数,这是声明的目标。它可以简单地收紧,只替换由斜杠组成的行。
awk '/^\/+$/{$0="9999"}1' file
sed 's@//*@9999@'
sed 's@/\{1,\}@9999@'
perl -pi -e 's/^\/+$/9999/g'