1

我想从标准输入读取,删除所有'/',并将输出写入标准输出。因此,一个文件包含:

/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

我真的不知道我需要什么来放置“替换”部分。有什么建议吗?

4

3 回答 3

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
于 2013-03-20T04:15:12.010 回答
2

完成您所要求的最简单的程序是:

 tr -d '/' 

如果你输入,你会得到你想要的输出 - 没有 / 字符你不需要readorecho语句

sed 的行为与其他人显示的相同,默认情况下, tr & sed 从标准输入读取并写入标准输出:

sed 's/\///g'
于 2013-03-20T04:17:26.130 回答
1

没什么……如下图:

% echo "/ab1/1a6/ 17" | sed 's/\///g'
ab11a6 17
于 2013-03-20T04:14:42.090 回答