Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用sed替换不规则数量的斜杠(/)_Linux_Unix_Sed - Fatal编程技术网

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'