2013-03-20 157 views
1

我想从标准输入读取,删除所有'/',并将输出写入标准输出。因此,文件包含:使用sed的shell脚本

/ab1/1a6/ 17 
/a/b/1 

将输出:

ab11a6 17 
ab1 

我想应该是这样的:

read input 
sed -r 's/\/[^\/]*\/[^\/]*\/.*/"I not sure what do I need to put in here"/g' 
echo $input 

我真的不知道我该怎么需要放置“替换”部分。任何建议?

回答

3
sed 's./..g' 

这将删除每一行中的所有字符/,所以你不需要更换部分。您可以使用/作为分隔符,并逃避它在文本:s/\///g或选择不同的标点符号作为分隔符:s./..g

所以,如果你想转换的输出一个名为input.txt文件,并写入output.txt

sed 's./..g' input.txt > output.txt 
# or 
sed 's./..g' <input.txt> output.txt 
1

没什么......如下图所示:

% echo "/ab1/1a6/ 17" | sed 's/\///g' 
ab11a6 17 
2

做你问什么,最简单的方案是:

tr -d '/' 

如果您输入,你会得到你想要的输出 - 无/字符你不需要一个readecho声明

的sed的行为同其他人已经表明,TR &使用sed从标准输入读取和写入默认到stdout:

sed 's/\///g' 
+0

OP特别要求'sed' – hd1 2013-03-20 04:17:53