同じ場所に次の情報を含む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に実際に次の1行のテキストファイルが含まれていると仮定する例です。
123456789, 1, 10, 12345
msisdn、チャネル、transid、time1などに対応し、カンマで区切られます。BASH
スクリプトから必要な値を取得する方法の例awk
(grep
ここでは特に便利ではありません)は次のとおりです。
#!/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
これは明らかに不完全です(すべての部分が表示されます...
)。ただし、少なくとも非常に明確で具体的な方法で問題を解決できる方法のテンプレートを表示する必要があります。