【问题标题】:Add new line after every period in txt file in terminal在终端的 txt 文件中的每个句点后添加新行
【发布时间】:2020-01-02 18:25:58
【问题描述】:

我在网上做了一些研究,但找不到解决问题的方法。

所以我得到了一个 .txt 文件,问题是所有文本都在一行中。我想在每个句点(。)之后换一个新行。带linux终端。

Lorem ipsum dolor sit amet,dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation >ullamco laboris nisi ut aliquip ex ea commodo consequat。

应该是这样的:

Lorem ipsum dolor sit amet,dolore magna aliqua。

Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris ut aliquip ex ea commodo consequat。

Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt。

【问题讨论】:

  • 您要空行还是换行? > 怎么了?您的前后包含不同数量的文本。
  • @BenjaminW。我希望下一句从新的一行开始。对不起,忽略文本,它只是一个 Lorem Ipsum 复制粘贴
  • 要删除句号后的空间吗?或者像sed 's/[.]/&\n\n/g'你喜欢什么?

标签: linux bash windows-subsystem-for-linux


【解决方案1】:

Perl 对于这种文本操作(仍然)非常方便:

perl -pe 's/\.\s+/.\n\n/g' file.txt

【讨论】:

  • 我同意,但不确定 "Windows Subsystem for Linux" 是否包含 Perl?
  • WSL 让你安装了一个 linux 发行版,所以 perl 应该在那里。
  • 我刚刚在我的 Mac 上运行 Parallels 的 Windows 10 VM 上的 WSL 中安装了 Ubuntu。哇,一路下来都是乌龟。
  • 就我而言,我已经刻苦、熟练并成功地避开了 Windows,这就是为什么我不知道 Perl 在那里。但现在我知道了这一点,也知道了更多,所以我谢谢你!
  • @MarkSetchell:另外,有几个 Perl 实现在 Windows 上本地运行,一个用于 Cygwin 环境。
【解决方案2】:

这似乎行得通。

echo "text1.test test text2." | sed s/'.'/'.\n'/g | sed 's/^ *//'

【讨论】:

    【解决方案3】:

    你可以使用tr在token=.上分句:

    lines=$(echo "adde.ede dded.aefaefe.aefeaf" | tr "." "\n")
    #lines=$(cat somefile.txt | tr "." "\n")
    

    然后用换行符打印行:

    #for l in $lines;do echo "$l."; echo; done  # causes word splitting, put quotes around $lines
    for l in "$lines";do echo "$l."; echo; done
    

    输出:

    adde
    ede dded
    aefaefe
    aefeaf.
    

    【讨论】:

    • 由于$lines 的未引用扩展,这将在每个单词之后添加一个换行符/句点。尝试使用Sentence with multiple words. 之类的输入示例进行检查。
    • 为什么要使用任何进程替换?只需使用tr . \\n < input-file | sed 's/$/./' 将每个. 替换为换行符,然后在每行末尾添加.。 (有效地重新插入在转换为换行符时删除的句点。)
    • @WilliamPursell 当输入文件已经有换行符时,你添加额外的点。
    猜你喜欢
    • 2022-07-01
    • 2019-12-03
    • 2015-09-06
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多