当前位置: 首页 > 知识库问答 >
问题:

连接未知的多个文本文件,同时在每个文件外壳脚本的内容后插入分隔符

张坚白
2023-03-14

对于shell脚本中的这个问题,我需要接受未知数量的文本文件并将它们连接起来。但是我需要在每个文件的内容后面放一个分隔符,比如(------)。脚本还需要一个退出代码,如果它成功,那么它将打印出正确的输出。但如果失败,它需要打印出这个帮助消息,“用法…”(它很长,而帮助信息本身并不那么重要。)

我已经知道如何接受多个文本文件来连接它们,但问题是分隔符。

我还知道如何使用cat显示帮助消息,但问题是我不知道需要为if和else语句设置什么条件,因为条件本身并没有按预期工作。例如,如果它可以找到txt文件并打印输出,它将按预期工作,但是如果没有txt文件,它不会打印帮助消息。

我很确定它必须是某种循环语句,除法器才能工作,但问题是我不知道怎么做。甚至都不确定条件。

# Don't know what condition to put for the if here
if [ $? -eq 0 ]
then
 # Don't know what condition to put for the for loop here
 for j in "$?" 
 do 
   cat *.txt
   echo "-----"
 done
exit 0
else
 cat <<< "Usage..." >&2
exit 1
fi

假设我们有两个文本文件。一txt有:

Hello

二txt有:

Happy

然后,如果代码按预期运行,则输出应为:

Hello
-----
Happy
-----

共有1个答案

周弘盛
2023-03-14

这些线条之间的东西?

#!/bin/bash

for param in $@; do
  if [[ -f $param ]]; then 
    cat $param 
    echo "-----" 
  else
    echo "wrong parameter passed! usage:..." 
    exit 1
  fi
done

exit 0

快速解释:

for param in $@; do

迭代传递给脚本的每个参数

[[ -f $param ]]

这将检查参数是否是现有文件

 类似资料:
  • 我有一个源代码,它读取文本文件并存储到一个元组类型的向量中: 包含以下数据: 因此数据由空格+垂直线+空格(多重分隔符)分隔。 如何更改源代码以处理多个分隔符? 注意:如果数据仅用空格隔开,则程序可以工作。

  • 问题内容: 希望对两个不同的文本文件执行内部联接。基本上,我正在寻找GNU联接程序的内部联接。这样的事情存在吗?如果没有,则or 解决方案将是最有帮助的,但是我的首选是Linux命令。 这是我要做的事的一个例子 文件1: 文件2: 结果: 问题答案: file2 末尾不应该包含吗? 如果是,您仍然可以使用:

  • 问题内容: 我正在使用标准的join命令来连接基于column1的两个排序文件。命令是简单的连接文件1文件2>输出文件。 但是,如何使用相同的技术加入3个或更多文件?join file1 file2 file3> output_file上面的命令给了我一个空文件。我认为sed可以帮助我,但我不太确定该怎么做? 问题答案: : 它仅适用于 两个 文件。 如果您需要加入三个,也许您可​​以先加入前两个

  • 问题内容: 我有一个包含数千个.txt文件的文件夹。我想根据以下模型将它们合并到一个大的.csv文件中: 我发现应该执行此工作的R脚本(https://gist.github.com/benmarwick/9265414),但它显示此错误。 我不明白我的错是什么。 没关系,我很确定没有R也可以做到这一点。如果您知道一个非常优雅和简单的方法,将不胜感激(这对像我这样的很多人很有用) 精度:文本文件为

  • 在vertx中将多个文件的内容附加到单个文件中的最佳方式是什么?我尝试过vertx文件系统和asyncFile,但它们都没有附加文件的选项,或者我不知道有任何附加文件。是否有其他方法可以在vertx中异步合并或附加文件。 我能找到的唯一解决方案是制作缓冲区列表并使用循环将内容写入每个先前缓冲区长度的末尾。

  • 问题内容: 我正在尝试将一个大型xml文件拆分为多个文件,并在AWK脚本中使用了以下代码。 上面的代码生成一个名称为“ fileItem_1”,“ fileItem_2”,“ fileItem3”等的xml文件列表。 但是,我希望文件名类似于“ item_XXXXX”,其中XXXXX是XML内的一个节点-如下图所示 因此,基本上我希望“ id”节点为文件名。谁能帮我这个忙吗? 问题答案: 我不会用