我在读取标准输入文件、编辑标准输入以及将输出写入其他文件时遇到问题。因此,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
然后,我才意识到read命令是逐行读取标准输入。代码本身不起作用。我尝试将所有大写更改为小写,然后删除包含 .我应该怎么办?如果我需要创建一个临时文件,我该如何在 shell 中创建一个临时文件?
最佳答案
其实比你想象的要容易得多。默认情况下,tr 从标准输入 (fd 0) 读取。脚本中的命令从脚本“继承”标准输入,除非您重定向它。所以像
#!/bin/sh
tr '[:upper:]' '[:lower:]' | sed -E 's/<td>([^<]*)<\/td>/\1/g'
我将 -r 更改为 -E,因为我的平台需要这样做。
关于linux - 在 shell 脚本中编辑标准输入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408430/