如何将文件放在一起,在某些文件末尾添加缺少的换行符

如何将文件放在一起,在某些文件末尾添加缺少的换行符

我有一堆.text文件,最多其中以标准 nl 结尾。

一对情侣最后没有任何终结者。最后一个物理字节(通常)是字母数字字符。

我正在使用cat *.text >| /tmp/joined.text,但后来注意到 join.text 中的几个地方,文件的第一行出现在前一个文件的最后一行的末尾。检查之前的文件,我发现没有行终止符——解释了连接。

这就提出了一个问题,连接丢失的换行符的最简单方法是什么?这些选项怎么样?

  1. 一种可以有效地向某些输入文件添加空行的解决方案。对我来说,这不是问题,因为 join.text 的处理可以处理它。
  2. 一种解决方案,仅将 cr/fl 添加到尚未以这种方式结束的文件中。

答案1

如果需要的话,另一个可以添加换行符的命令是awk,所以:

awk 1 ./*.txt

这里的 1 是在 awk 中获取真实条件的最简单方法,它可以用于此目的,因为 awk 对真实条件的默认操作是打印输入行。

答案2

cut使用GNU 等一些实现cut,您可以执行以下操作:

cut -b 1- ./*.text > output

因为如果缺少的话它将添加缺少的换行符。

答案3

这个方便的 Perl 单行代码可以完成添加缺少的换行符的工作(仅当该换行符尚未存在时):

perl -lpe '' ./*.text > output

答案4

我想到的第一种方法是循环文件并仅打印其内容并附加换行符:

for f in *text; do
    printf '%s\n' "$(cat < "$f")"
done > /tmp/joined.text

$()将删除任何已经存在的换行符,因此这将导致\n每个文件末尾只有一个换行符。

相关内容