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)
使用两个额外的临时文件尝试此解决方案:
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
选项是不可能的。
归档时间: |
|
查看次数: |
5470 次 |
最近记录: |