Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash帮助,将不同文件中的文本行合并到一个新文件中_Bash - Fatal编程技术网

Bash帮助,将不同文件中的文本行合并到一个新文件中

Bash帮助,将不同文件中的文本行合并到一个新文件中,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.

对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.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