我有一堆.text
文件,最多其中以标准 nl 结尾。
一对情侣最后没有任何终结者。最后一个物理字节(通常)是字母数字字符。
我正在使用cat *.text >| /tmp/joined.text
,但后来注意到 join.text 中的几个地方,文件的第一行出现在前一个文件的最后一行的末尾。检查之前的文件,我发现没有行终止符——解释了连接。
这就提出了一个问题,连接丢失的换行符的最简单方法是什么?这些选项怎么样?
- 一种可以有效地向某些输入文件添加空行的解决方案。对我来说,这不是问题,因为 join.text 的处理可以处理它。
- 一种解决方案,仅将 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
每个文件末尾只有一个换行符。