【问题标题】:Using SED to change name of object in txt使用 SED 更改 txt 中对象的名称
【发布时间】:2019-08-09 20:31:05
【问题描述】:

我有一个关于 HTML 的小项目。我构建 HTML 的脚本是这样的:

#!/bin/bash

summe=$(find /home/info/PDF -type f | wc -l)
array=()
find /home/info/PDF -type f -print0 >tmpfile
while IFS=  read -r -d $'\0'; do
array+=("$REPLY")
done <tmpfile
if [ $summe>0 ]
    then
            rm -f /var/www/html/index.html
            cat header.txt > /var/www/html/index.html
            for (( i=0; i<$summe; i++))
            do
                    cat testcontent.txt >> /var/www/html/index.html
            done
            cat footer.txt >> /var/www/html/index.html
fi

使用 $summe 我可以计算我的目录中有多少 PDF,以便稍后在我的 Nginx 上显示它们。在示例中,我有 3 个 PDF,然后内容 sn-p 将在我的 HTML 中设置 3 次。现在我的问题是 PDF 的名称不同,我不知道如何使用 SED 正确更改它们。

内容sn-p:

<div class="content">
    <object data="chungus.pdf" style="width:1920px;height:1080px"</object>
  </div>

我希望这是足够的信息,对于我仍在学习的糟糕英语感到抱歉。

【问题讨论】:

  • 脚本的概念有点不同寻常。你应该在更抽象的层次上描述你想要做什么。我了解您想创建一个 HTML 文件,其中包含一个常量(?)标题 header.txt,您找到的每个文件的一部分 testcontent.txt,修改为包含文件名(仅基本名称 eins.pdf 或完整路径)和页脚。仅当您找到至少一个文件时才重新创建 HTML 文件。如果您没有找到文件,则 HTML 保持不变。是否需要在页眉或页脚某处显示文件数?
  • @jww 显然脚本有问题,但主要问题似乎是如何将文件名放入生成的HTML输出中(使用sed)。
  • @Bodo 我不需要仅在 testcontent.txt 中显示页眉或页脚中的文件数
  • edit您的问题添加更多信息,而不是仅在评论中回答。我不确定我理解是否正确。 testcontent.txt的修改版需要$summe吗?您的内容 sn-p 包含一个文件名 chungus.pdf。我认为这应该替换为某人从问题中删除的示例中的文件名,如eins.pdfzwei.pdf 等。没有什么显然应该用文件数代替。如果不需要内容中的数字,则无需先统计文件。

标签: bash shell sed


【解决方案1】:

在来自 bash 手册 CONDITIONAL EXPRESSIONS 的 bash 中,注意变量周围的双引号和 &gt; 周围的空格很重要

[ "$summe" > 0 ]

是一个字典测试

字符串 1 > 字符串 2

          True if string1 sorts after string2 lexicographically.

posix 兼容性的单括号测试

[ "$summe" -gt 0 ]

否则使用 bash 双括号可以删除双引号

[[ $summe -gt 0 ]]

否则有算术表达式(双括号),这里的空格不重要,$可以省略

((summe>0))

【讨论】:

    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 1970-01-01
    • 2022-06-19
    • 2015-11-10
    • 2012-04-11
    相关资源
    最近更新 更多