1

我在读取标准输入文件、编辑标准输入以及将输出写入其他文件时遇到问题。因此,shell 将使用如下命令运行:

./shellName < inputFile > outputFile

所以我这样写我的shell:

read INPUT
tr '[:upper:]' '[:lower:]' INPUT
grep "<td>" INPUT | sed -r 's/<td>([^<]*)<\/td>/\1/g' #to search all line that contain <td> and delete <td> and <\/td>
echo $INPUT

然后,我才意识到读取命令是逐行读取标准输入的。代码本身不起作用。我尝试将所有大写字母更改为小写字母,然后在包含 . 我该怎么办?如果我需要创建一个临时文件,如何在 shell 中创建一个临时文件?

4

1 回答 1

1

它实际上比你想象的要容易得多。默认情况下, tr 从 stdin (fd 0) 读取。除非您重定向脚本,否则脚本中的命令会从脚本“继承”标准输入。所以像

#!/bin/sh
tr '[:upper:]' '[:lower:]' | sed -E 's/<td>([^<]*)<\/td>/\1/g'

我将 -r 更改为 -E 因为我的平台需要。

于 2013-01-18T22:13:25.280 回答