Bash帮助,将不同文件中的文本行合并到一个新文件中
对bash来说还很陌生,我有几个不同的文件,每个文件都有数千行,我想从每个文件中提取每行,并将它们放在一行,在一个新文件中 例如,如果文件1包含IPBash帮助,将不同文件中的文本行合并到一个新文件中,bash,Bash,对bash来说还很陌生,我有几个不同的文件,每个文件都有数千行,我想从每个文件中提取每行,并将它们放在一行,在一个新文件中 例如,如果文件1包含IP 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 文件2包含端口 123 124 125 126 127 文件3包含时间戳,文件4包含描述 我希望我的输出是: 192.168.1.1 : 123 : 01/01/2012 : blah blah blah 192.168.1.
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
文件2包含端口
123
124
125
126
127
文件3包含时间戳,文件4包含描述
我希望我的输出是:
192.168.1.1 : 123 : 01/01/2012 : blah blah blah
192.168.1.2 : 124 : 01/02/2012 : blah blah
我怎样才能把它们放在一起呢?将这四个文件作为四个独立的文件描述符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
exec 3paste(1)
和sed(1)
paste file1 file2 file3 file4 | sed 's/\t/ : /g' > out