将多个文件的内容合并为单个字符串,且无换行符。使用bash命令和cat命令即可实现。

15

我有一些文件名以eg_开头,并且每个文件都只包含一行文本:

eg_01.txt: @china:129.00

eg_02.txt @uk:219.98

eg_03.txt @USA:341.90

......

我希望将它们连接成单行字符串,以便通过URL发送,如下所示: @china:129.00@uk:219.98@USA:341.90

我使用以下命令: echo cat eg_*

它输出的结果看起来像一个字符串,但实际上包含新行符: "@china:129.00

@uk:219.98 @USA:341.90"

还有其他方法可以构造期望的字符串并去除换行和空格吗?仅使用cat就可以做到吗?

预先感谢您的回复。


相关:https://dev59.com/Jmoy5IYBdhLWcg3wKq0S - redolent
3个回答

26

你可以随时将其管道传送到tr

tr "\n" " "

这会移除所有stdin中的换行符,并用空格替换它们。

编辑:如Bart Sas所建议的,您也可以使用tr -d来删除换行符。

tr -d "\n"

(注意:仅将第二个参数指定为 tr 的空字符串是不起作用的)


2
如果您不想在字符串之间有空格,可以使用 tr -d '\n'。 - Bart Sas
对于极少数拥有Windows行终止符文件的人,请注意:"\r\n"将是使用的字符串。 - A. Wilson

3

只需使用一个命令

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

1
在Perl中,您可以这样做:
perl -pe'chomp' eg*.txt

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接