我有几个文件,比如a,b,c,我想像
> cat a b c
但是在a的开头行有“a”。 “b”,在b行的开头,“c”,在c行的开头。 我可以使用python:
来做到这一点#!/bin/env python
files = 'a b c'
all_lines = []
for f in files.split():
lines = open(f, 'r').readlines()
for line in lines:
all_lines.append(f + ',' + line.strip())
fout = open('out.csv', 'w')
fout.write('\n'.join(all_lines))
fout.close()
但我更喜欢在命令行中执行此操作,将一些简单的命令与管道组合在一起操作
有没有简单的方法来实现这个目标?
感谢。
答案 0 :(得分:8)
perl -pe 'print "$ARGV,"' a b c
会这样做。
答案 1 :(得分:5)
grep(1)
和sed(1)
可以为您执行此操作:grep -H '' <files> | sed 's/:/,/'
:
$ cat a ; cat b ; cat c
hello
world
from space
$ grep -H '' * | sed 's/:/,/'
a,hello
b,
b,
b,world
c,from space
答案 2 :(得分:4)
您还可以使用awk(1)
程序:)
$ awk 'BEGIN { OFS=","; } {print FILENAME , $0;}' *
a,hello
b,
b,
b,world
c,from space
d,,flubber