我在读取标准输入文件,编辑标准输入以及将输出写入其他文件时遇到问题。因此,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中创建临时文件?
答案 0 :(得分:1)
实际上比你想象的容易得多。默认情况下,tr从stdin(fd 0)读取。除非重定向,否则脚本中的命令会“继承”脚本中的stdin。像
这样的东西#!/bin/sh
tr '[:upper:]' '[:lower:]' | sed -E 's/<td>([^<]*)<\/td>/\1/g'
我将-r更改为-E,因为我的平台需要这样做。