尝试向粘贴命令添加换行符

use*_*022 5 bash newlines paste

这是尝试包含换行符的粘贴命令的弱尝试:

    paste -d -s tmp1 tmp2 \n tmp3 \n tmp4 tmp5 tmp6 > tmp7
Run Code Online (Sandbox Code Playgroud)

基本上我在每个 tmp 中有几行,我希望输出读取

First(tmp1) Last(tmp2)
Address(tmp3)
City(tmp4) State(tmp5) Zip(tmp6)
Run Code Online (Sandbox Code Playgroud)

我是否在粘贴命令中使用换行符?

这是我的成品:谢谢您的帮助!

    cp phbook phbookh2p5

    sed 's/\t/,/g' phbookh2p5 > tmp
    sort -k2 -t ',' -d tmp > tmp0
    cut -d',' -f1,2 tmp0 > tmp1
    cut -d',' -f3 tmp0 > tmp2
    cut -d',' -f4,5,6 tmp0 > tmp3
    echo "" > tmp4

    paste -d '\n' tmp1 tmp2 tmp3 tmp4 > tmp7

    sed 's/\t/ /g' tmp7 > phbookh2p5

    cat phbookh2p5

    rm tmp*; rm phbookh2p5
Run Code Online (Sandbox Code Playgroud)

Mar*_*ert 7

使用两个额外的临时文件尝试此解决方案:

paste tmp1 tmp2 > tmp12
paste tmp4 tmp5 tmp6 > tmp456
paste -d "\n" tmp12 tmp3 tmp456 > tmp7
Run Code Online (Sandbox Code Playgroud)

此解决方案基于以下假设:该-d选项为所有输入文件全局选择分隔符因此它可以是空白换行符。在某种程度上这是正确的,因为后来发生了-d覆盖以前的事件。但是,正如@DigitalTrauma 指出的那样,我们可以提供多个按顺序使用的分隔符。所以@DigitalTrauma 的解决方案比我的更优雅,因为它完全避免了额外的临时文件。

我的解决方案的一个利基应用程序是这样一种情况,即必须使用一个或多个字符的分隔符。仅使用该-d选项是不可能的。