粘贴命令:设置(多个)定界符


9

在Linux中,paste(GNU coreutils)8.13 存在以下问题:

尝试设置除默认定界符(TAB)之外的另一个定界符会导致只打印定义的定界符的第一个字符,或者完全忽略它。

问题:使用时如何定义(多个)定界符 paste

简单地使用例如abc-123作为分隔符会很好。“多个”是指例如2个TABS而不是1个。


到目前为止,我尝试使用的包围定界符的模式是

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

全部具有相同的结果:仅接受或完全忽略第一个字符。我也尝试过简短版本-d"\"和多个实例&ndahs; 没有。

也:

  • --delimiters="\\" →错误信息

什么是完美的,尽管不是我想要的:

  • --delimiters="\n" →换行符
  • --delimiters="\0" →之间没有任何东西
  • --delimiters="\t"TAB,默认设置。大。

Answers:


17

要在abcfile1和file2之间插入,可以执行以下操作:

paste -d abc file1 /dev/null /dev/null file2

要么:

paste -d abc file1 - - file2 < /dev/null

如果要两个选项卡:

paste file1 /dev/null file2

使用/dev/null以创建文本处理两列 ”的作品(除了:这是常识,到目前为止,如果没有我错过了:你从哪里得到这一信息?)
erch

1
@ Chirp.NotLuke。/dev/null就像阅读时一个空文件,所以你粘贴file1,空文件,空文件,文件2有隔板之中,反过来abc。有关-d工作原理的详细信息,请参见paste手册页。
斯特凡Chazelas

您还可以添加@StéphaneChazelas pr -mts'abc' file1 file2吗?
深部

4

这是因为您只给它两个要连接的文件,每个输入文件的每个行连接之间都使用分隔符字符串的每个字符。

例如

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...

2

在BSD系统(据我所知,不是Linux)上,有一个lam(如“ laminate”中的)实用程序,它比上述解决方案更快,更短:

lam file1 -s delimiter file2
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.