在shell脚本中编辑标准输入文件

时间:2013-01-18 22:06:22

标签: linux shell scripting

我在读取标准输入文件,编辑标准输入以及将输出写入其他文件时遇到问题。因此,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

然后,我才意识到命令读取是逐行读取标准输入。代码本身不起作用。我尝试将全部大写更改为小写,然后删除和&lt; / td&gt;在线包含。我该怎么办?如果我需要创建临时文件,如何在shell中创建临时文件?

1 个答案:

答案 0 :(得分:1)

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

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

我将-r更改为-E,因为我的平台需要这样做。