bash相当新,我有几个不同的文件,每个都有数千行,我想从每个文件中取出每一行,并将它们放在一行,在一个新文件中,
例如,如果file1包含IP
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
file2包含端口
123
124
125
126
127
file3包含时间戳,file4包含描述
我希望我的输出为:
192.168.1.1 : 123 : 01/01/2012 : blah blah blah
192.168.1.2 : 124 : 01/02/2012 : blah blah
我怎么能把它们放在一起呢?
答案 0 :(得分:2)
使用paste(1)
和sed(1)
。
paste file1 file2 file3 file4 | sed 's/\t/ : /g' > out
答案 1 :(得分:1)
将四个文件打开为四个独立的文件描述符3到6,然后在循环中从每个文件中读取一行。 0,1和2分别作为stdin,stdout和stderr打开,因此3是第一个未使用的描述符。
exec 3< file1
exec 4< file2
exec 5< file3
exec 6< file4
while IFS= read -r ip <&3 &&
IFS= read -r port <&4 &&
IFS= read -r timestamp <&5 &&
IFS= read -r description <&6
do
echo "$ip : $port : $timestamp : $description"
done