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

Pan*_*dya 25 command-line text-processing

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

使用终端命令读取: cat example

输出:

abc cdef ghi jk lmnopq rst uv wxyz
Run Code Online (Sandbox Code Playgroud)

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

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Run Code Online (Sandbox Code Playgroud)

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

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

ter*_*don 53

几个选择:

  1. 经典,使用tr

    tr ' ' '\n' < example
    
    Run Code Online (Sandbox Code Playgroud)
  2. cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
    Run Code Online (Sandbox Code Playgroud)
  3. sed

    sed 's/ /\n/g' example
    
    Run Code Online (Sandbox Code Playgroud)
  4. perl

    perl -pe 's/ /\n/g' example
    
    Run Code Online (Sandbox Code Playgroud)
  5. 使用外壳

    foo=$(cat example); echo -e ${foo// /\\n}
    
    Run Code Online (Sandbox Code Playgroud)


Avi*_*Raj 16

试试下面的命令

awk -v RS=" " '{print}' file
Run Code Online (Sandbox Code Playgroud)

或者

awk -v RS='[\n ]' '{print}' file
Run Code Online (Sandbox Code Playgroud)

例子:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz
Run Code Online (Sandbox Code Playgroud)

解释:

RS(记录分隔符)是一个内置的 awk 变量。在第一个命令中,记录分隔符变量的值是空格。awk 会在找到空格时中断打印行。

在第二个命令中,赋予 RS 变量的值是空格或换行符。该命令消除了运行第一个命令时出现的额外空行。


sou*_* c. 10

你可以使用xargs

cat example | xargs -n 1
Run Code Online (Sandbox Code Playgroud)

或更好

xargs -n 1 < example
Run Code Online (Sandbox Code Playgroud)

  • `xargs -n 1 &lt; 示例` 为您节省了 1 只小猫 (7认同)