将文本文件转换为单行

时间:2016-01-24 00:52:42

标签: regex linux sed newline

我试图寻找这个,但找不到任何适合我的东西。 我的问题是我需要将扩展​​名为.txt的多个文件的内容转换为一行,例如:

1
2
3
4

我想转换为12341 2 3 4

我也有我希望包含的子文件夹。我尝试过多次尝试使用Linux,甚至尝试使用TextCrawler 3 for Windows,但没有任何帮助我。

3 个答案:

答案 0 :(得分:1)

尝试翻译:

cat *.txt | tr -d '\n'

-d表示删除所有换行符\n

如果您想拥有空间,可以

cat *.txt | tr '\n' ' '

答案 1 :(得分:1)

删除换行符或用空格替换它们:

$ paste -s -d ' ' infile > infile.tmp && mv infile.tmp infile
$ cat infile
1 2 3 4

这只打印到stdout。要更改文件:

.txt

要对许多文件执行此操作,例如当前文件夹和所有子文件夹中的所有$ find -name '*.txt' -exec bash -c 'paste -s -d " " {} > {}.tmp && mv {}.tmp {}' \; 个文件:

exec

这不是很优雅,因为它在exec部分创建了一个子shell,但是当find $Properties部分中有重定向时,这是一种方法。< / p>

答案 2 :(得分:0)

从* .txt

中的文件中删除所有换行符
sed -z -i 's/\n//g' *.txt

将所有换行符转换为* .txt

中的空格
sed -z -i 's/\n/ /g' *.txt

但是对于子目录,您需要一些帮助。

find -name "*.txt" -exec sed -z -i 's/\n/ /g' {} ';'