使用sed替换不规则数量的斜杠(/)

时间:2015-06-23 06:56:39

标签: linux unix sed

我有一个带有多个斜杠(/)的文件,但该数字不是唯一的。数据文件的一部分如下所示:

input.txt中

30
///
10
40
23
44
//
////
31
/
54
/

任何人请建议我如何用未定义的值(9999)替换任意数量的斜杠(/)。我将输出视为

output.txt的

30
9999
10
40
23
44
9999
9999
31
9999
54
9999

4 个答案:

答案 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
相关问题