如何在文本文件中用换行符/回车符替换空格?

如何在文本文件中用换行符/回车符替换空格?

我有一个名叫“example”的简单文本文件。

使用终端命令读取:cat example

输出:

abc cdef ghi jk lmnopq rst uv wxyz

我想要转变(转换)成以下形式:(预期输出cat example

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

我如何通过命令行执行此操作?

(这只是一个示例文件,我想转变单词在垂直列中的位置)

答案1

一些选择:

  1. 经典用法tr

    tr ' ' '\n' < example
    
  2. 使用cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
  3. 使用sed

    sed 's/ /\n/g' example
    
  4. 使用perl

    perl -pe 's/ /\n/g' example
    
  5. 使用 shell

    foo=$(cat example); echo -e "${foo// /\\n}"
    

答案2

尝试以下命令:

awk -v RS=" " '{print}' file

或者:

awk -v RS='[\n ]' '{print}' file

例子:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

解释:

RS(记录分隔符)是一个内置awk变量。在第一个命令中,赋给该变量的值RS是空格(" ")。awk只要发现空格,就会中断打印行。

在第二个命令中,赋给变量的值RS是换行符或空格 ( '[\n ]')。此命令消除了运行第一个命令时出现的额外空行。

答案3

您可以使用xargs

cat example | xargs -n 1

或更好

xargs -n 1 < example

答案4

没有人发布 python,因此这里是:

python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt 

我们将输入文件重定向到python的标准输入流,并逐行读取。每行都删除其尾随的换行符,拆分成单词,然后重新连接成一个字符串,其中每个单词都由换行符分隔。这样做是为了确保每行只有一个单词,并避免在相邻有多个空格的情况下插入多个换行符。最终我们得到字符串列表,然后再次将其合并为更大的字符串,并打印到标准输出流。稍后可以使用重定向将其重定向到另一个文件> out.txt

相关内容