【问题标题】:Merge multiple lines into one line using shell script使用shell脚本将多行合并为一行
【发布时间】:2021-09-06 11:58:17
【问题描述】:

我有一个像 inputfolder/abc.txt 这样的文本文件

输入(以下只是一个示例 - 实际文件将有很多行,每次都会有所不同):

abcdefgh~

asdfghjkliuy~

qwertyuiopasdfgh~

..........

每一行都以'~'结尾,我想把所有的行合并成一个

期望的输出:

abcdefgh~asdfghjkliuy~qwertyuiopasdfgh~...............

如何使用 shell 脚本将所有行合并为一行? (我不想添加任何额外的字符)

合并所有行后,应将文件移动到另一个文件夹。
示例:OutputFolder/abc.txt

【问题讨论】:

标签: shell


【解决方案1】:

你可以用tr和delete参数解决这个问题(删除换行符)。

$ cat inputfolder/abc.txt 
abcdefgh~

asdfghjkliuy~

qwertyuiopasdfgh~

..........
$ cat inputfolder/abc.txt | tr -d "\r\n" > outputFolder/abc.txt
$ cat outputFolder/abc.txt 
abcdefgh~asdfghjkliuy~qwertyuiopasdfgh~..........

或者sed:

$ sed -z "s/\n//g" inputfolder/abc.txt > outputFolder/abc.txt

【讨论】:

  • 您好,斯文,感谢您的帮助。我尝试使用 tr 命令执行,但出错说“tr:找不到命令”。我可以使用任何其他命令来代替 'tr' 吗?
  • Sven,我尝试使用 sed 命令并且它有效,但我有一个问题。我正在使用的命令是 --------------- sed ':a; N; $!巴; s/\n//g' input.txt > output.txt ----------- 它正在合并第 1 行中的所有内容,但它还添加了一个额外的空白换行符 - 第 2 行中的空格(第2)我不想要那个。我在这里错过了什么吗?非常感谢任何建议。
  • 嗯。我不知道为什么tr 不可用,但也许您可以检查问题并修复它。您的 PATH 是否正确(请参阅 stackoverflow.com/questions/51920182/…)?你在 Ubuntu 上吗(见 askubuntu.com/questions/1113047/tr-command-not-found)?
  • tbh,我不是 sed 专家,但我在答案中添加了一个命令,它对我有用,没有最后的换行符。
猜你喜欢
  • 1970-01-01
  • 2013-11-07
  • 2013-10-04
  • 2022-01-08
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 2020-08-11
  • 2012-12-29
相关资源
最近更新 更多