2010-10-14 81 views
9

我得到了一些文件,其名称以eg_开头。并且仅在每个包含一个单线bash cat多个文件内容到没有换行符的单个字符串

eg_01.txt: @china:129.00

eg_02.txt @uk:219.98

eg_03.txt @USA:341.90

.. ...

我期待他们能够通过以下URL发送到一行: @china:[email protected][email protected]:341.90

我使用 呼应cat eg_*

它给我的输出看起来像一个字符串,但它实际上包含了新行: “@china:129.00

@uk:219.98 @USA:341.90”

有没有其他的方法可以构造出预期并摆脱新线甚至空间的弦?只有猫才能做到这一点?

在此先感谢

+0

相关:http://stackoverflow.com/questions/8739427/bash-add-string-to-the-end-of-the-file-without-line-break – redolent 2014-12-01 21:36:07

回答

17

您可以将其去除的stdin所有新行和用空格

编辑替换它们总是管tr

tr "\n" " " 

:由巴特SAS建议,你也可以用tr -d删除换行

tr -d "\n" 

(注意:只是指定一个空字符串tr的第二个参数不会做)

+2

如果你不想要字符串之间的空格你可以使用tr -d'\ n'代替。 – 2010-10-14 19:28:26

+0

非常感谢猫eg_ * | tr -d'\ n'做了诀窍 – user271785 2010-10-14 19:32:04

+0

注意少数使用Windows行结束符的文件的用户:“\ r \ n”是使用的字符串。 – 2012-09-19 23:33:03

1

仅使用一个命令

url=$(awk '{printf "%s",$0}' eg*) 
1

在Perl中,你会做这样的:

perl -pe'chomp' eg*.txt 

-p表示“循环输入文件并执行-e开关指定的任何代码。 Perl中的chomp表示“删除任何结尾的换行符”。

相关问题