【问题标题】:Replace characters in a Unix text file without line break在没有换行符的情况下替换 Unix 文本文件中的字符
【发布时间】:2021-08-10 02:28:31
【问题描述】:

我想替换没有任何换行符的 Unix 文件中的某些字符。
我尝试使用sed,但是由于文件中没有换行符,所以我得到了一个零字节的输出文件。

sed 's/FORMS=11111/FORMS=22222/g' file.txt > out.txt

我没有 bbe 命令。有人可以提出解决方案吗?

【问题讨论】:

  • 线路有多长?可以给我们看看吗?
  • 文本文件可能有数百 Kilo Byte 大,但其中不包含换行符。
  • 该行可能太长,sed 无法正确处理。我可能会为此编写一些 C++。
  • 文本文件中应该有固定长度的行,但由于某些原因,换行符消失了。例如,如果文本文件是 1000 字节大并且行应该是 100 个字符,那么文本文件中有 10 行没有换行符
  • 您需要替换字符还是字符串?如果只有字符,请尝试tr

标签: unix text replace


【解决方案1】:

你说:

文本文件中应该有固定长度的行,但由于某些原因,换行符消失了。

因此您可以使用fold 命令将文本换行成一定大小,然后在生成的行上运行sed

cat file.txt | fold -w <size> | sed ...

【讨论】:

  • sed 命令有效,但输出文件包含我不想要的换行符
  • 您可以使用tr -d '\n'paste -sd '' 将行合并为一行。
猜你喜欢
  • 2020-10-27
  • 2021-01-20
  • 2015-02-12
  • 1970-01-01
  • 2012-11-19
  • 2013-02-20
  • 2012-09-02
相关资源
最近更新 更多