【问题标题】:paste command with file headers带有文件头的粘贴命令
【发布时间】:2017-04-26 04:28:40
【问题描述】:

我有 178 个扩展名为 _count 的文件,我想使用以文件名作为标题的粘贴命令,比如

File1_count

abc
def 
gfh

FILE2_count

ijk
lmn
opq

FILE3_count

 rst
 uvw
 xyz

.... FILE178_count

 123
 456
 789

这样当我这样做时 粘贴 *_count 我将使用粘贴命令获取标题

 FILE1 FILE2  FILE3   ....  FILE178
  abc    ijk    rst            123
  def    lmn    uvw            456
  gfh    opq    xyz            789

【问题讨论】:

  • 您必须重写(或制作临时副本)以包含文件名作为标题。 for f in FILE* ; do { echo "$f" ; cat $f ; } >$f.tmp && mv $f.tmp $f amd 然后是你的粘贴 cmd。我认为 file1 file11 file111 将是前 3 列(例如),所以最好先检查一下。您需要将文件重命名为 file0001 以获得干净的列表祝您好运。
  • 您还需要这方面的帮助吗?祝你好运。
  • 您好,庇护所有效!虽然由于它不在答案部分,我无法标记它......

标签: file unix command paste


【解决方案1】:

如果你使用像bash这样支持数组的shell,你可以把你关心的所有文件放在一个里面,打印出来,用制表符分隔,然后调用paste,把文件放在数组:

files=( *_count )
( IFS=$'\t'; printf "%s\n" "${files[*]%_count}"; paste "${files[@]}" ) > output.tsv

【讨论】:

  • 回复较晚,但另一个问题被标记为与此问题重复,因此它似乎是一个更好的答案。
【解决方案2】:

您必须重写(或制作临时副本)以包含文件名作为标题。 for f in FILE* ; do { echo "$f" ; cat $f ; } >$f.tmp && mv $f.tmp $f amd 然后是你的粘贴 cmd。我认为 file1 file11 file111 将是前 3 列(例如),所以最好先检查一下。您需要将文件重命名为 file0001 以获得干净的列表 祝您好运。 – 脱壳者

【讨论】:

    猜你喜欢
    • 2017-09-25
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 2022-11-25
    • 2011-05-17
    • 2020-02-14
    • 1970-01-01
    • 2015-01-13
    相关资源
    最近更新 更多