我有一个带有多个斜杠(/
)的文件,但该数字不是唯一的。数据文件的一部分如下所示:
30
///
10
40
23
44
//
////
31
/
54
/
任何人请建议我如何用未定义的值(9999)替换任意数量的斜杠(/
)。我将输出视为
30
9999
10
40
23
44
9999
9999
31
9999
54
9999
答案 0 :(得分:2)
使用sed
:
sed -r 's/^\/+$/9999/' input.txt > output.txt
将仅包含1个或多个/
的行替换为9999
。 /
需要转义。 +
意味着1个或更多。
使用awk
:
awk '{sub(/^\/+$/,"9999")}1' input.txt > output.txt
答案 1 :(得分:2)
如其他答案所示,您可以在模式中转义/
(斜线或固体,如果注意;反斜杠或反向固相线看起来像\
),或使用标记替代限制的不同字符:
sed 's@//*@9999@'
sed 's@/\{1,\}@9999@'
或主题的其他变体。使用@
是任意的;任何未出现在正则表达式中的字符都可以被轻易使用。
答案 2 :(得分:2)
perl -pi -e 's/^\/+$/9999/g'
请查找执行here
答案 3 :(得分:1)
您可以使用sed,
sed 's/^\/\+$/9999/' file
AWK,
awk '/^\/+$/{$0="9999"}1' file