如何从多个文件中 grep 并输出到一个文件

如何从多个文件中 grep 并输出到一个文件

我在同一位置有 3 个文件,其中包含以下信息:

File1: msisdn, channel, transid, time1

File2: transid, time2, messageid

File3: messageid, status, time3, time4

如何从 3 个文件中 grep 并写入以下格式的文本文件:

msisdn|channel|transid|message|status|time1|time2|duration1(time2-time1)|time3|time4|duration2(time4-time3)

答案1

可以将一系列命令放置在一个BASH文件中来完成您在此处建议的操作。由于您选择的标准似乎非常自定义并且不遵循明显的逻辑,因此您可能必须显式存储每个变量。下面是一个示例,假设 File1 实际上包含一个文本文件,其中一行如下所示:

123456789, 1, 10, 12345

对应msisdn、channel、transid、time1等,用逗号分隔。如何在BASH脚本中获取所需值的示例awkgrep此处不是特别有用)如下所示:

#!/usr/bin/bash

# Define the filenames
File1='filename_of_file1.txt'
File2='filename_of_file2.txt'
File3='filename_of_file3.txt'
OutputFile='filename_of_output_file.txt'

# Grab the Nth column in each respective file
msisdn=$(awk -F, '{print $1}' $File1
channel=$(awk -F, '{print $2}' $File1
transid1=$(awk -F, '{print $3}' $File1
time1=$(awk -F, '{print $4}' $File1
transid2=$(awk -F, '{print $1}' $File2
...
...

# Calculate the difference between certain variables
duration1=$(echo ${time2}-${time1} | bc)
duration2=$(echo ${time4}-${time3} | bc)
...
...

# Return the formatted string to an output file
echo "${msisdn}|${channel}|${transid}..." > $OutputFile

这显然是不完整的(所有部分都标有...)。然而,它至少应该显示一个模板,说明人们如何以非常明确和具体的方式解决这个问题。

相关内容