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

标签 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

然后,我才意识到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/

相关文章:

c - 在 Debian Linux 中快速创建一个非常大的文件

c - Kernel Scheduler(Linux) - 任务是函数吗?

bash - 读取日志文件以提取各个字段并统计发生次数

linux - 使用egrep -o后如何进行egrep

python - 在 python 中使用 sshpass 的 ssh 似乎不起作用

Linux shell 脚本

powershell - 在 Powershell 中使用自定义用户文件夹创建本地用户

linux - 原子命令不运行原子

linux - pwd|sed -e 是什么意思?

linux - Linux 中的模糊重定向