linux - 如何将 sed 命令组合到 shell 脚本中

标签 linux bash shell sed

<分区>

我必须对文件执行以下 sed 命令以删除该文件中的某些行。我怎样才能使它成为一个以文件名作为变量的shell scipt。或者有什么简单的方法可以作为 shell 脚本执行此操作

sed -i '/^Total/d' delhi222517.txt 
sed -i '/^CBSE/d' delhi222517.txt 
sed -i '/^Keyword wise/d' delhi222517.txt
sed -i '/^wise/d' delhi222517.txt 
sed -i '/^Select A/d' delhi222517.txt
sed -i '/^Enter A/d' delhi222517.txt
sed -i '/^(Keyword/d' delhi222517.txt
sed -i '/^State Name/d' delhi222517.txt
sed -i '/^SNo/d' delhi222517.txt
sed -i '/^Disclaimer/d' delhi222517.txt
sed -i '/^provided/d' delhi222517.txt
sed -i '/^at$/d' delhi222517.txt 
sed -i '/^Designed/d' delhi222517.txt
sed -i '/^National/d' delhi222517.txt 
sed -i '/^$/d' delhi222517.txt 
sed -i '/^\t$/d' delhi222517.txt 
sed -i '/^\s$/d' delhi222517.txt
sed -i '/^         /d' delhi222517.txt
sed -i '/^    /d' delhi222517.txt 
sed -i 's/^\([0-9]\)/--\1/g' delhi222517.txt

最佳答案

变量很简单:

F=delhi222517.txt
sed -i '/^Total/d' "$F"
...

或者如果您想将文件名作为参数传递给您的脚本:

F="$1"
sed -i '/^Total/d' "$F"
...

但是最好使用sed 选项只调用一次。您可以使用:

sed -i \
    -e '/^Total/d' \
    -e '/^CBSE/d' \
    -e '/^Keyword wise/d' \
    ...  \
    delhi222517.txt

或者你可以用完整的脚本写一个文件:

sed -i -f script.sed delhi222517.txt

或者,如果你觉得够极客,你可以使用标准输入:

sed -i -f - delhi222517.txt << EOF
/^Total/d
/^CBSE/d
/^Keyword wise/d
...
EOF

关于linux - 如何将 sed 命令组合到 shell 脚本中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20151483/

相关文章:

linux - Unix 切操作

linux - 我的 AWS key 有什么问题?

python - 我如何通过终端 Linux 向程序发出特定命令?

json - jq 在空格后截断 ENV 变量

linux - 重命名每个组中的最新文件

bash - 在 Mac 上通过命令行或快捷方式切换 wifi 连接

linux - 找出 Linux 中的剩余时间

python - 尝试安装 tensorflow 时收到奇怪的权限错误

bash - 使用与号 (&) 在后台运行子进程时,运行 bash 脚本不会返回到终端

linux - 如何查找文件名中编号最大的文件