私は、解析するスクリプトを作成したい私のコンピュータに保存されたログファイルを持っています。私の目的は、ログファイルの各行から2つの値を取り出し、同じ行の隣に(おそらくハイフンで区切って)それらを出力し、ログ内の各行について繰り返し処理することです。たとえば、次のログ:2つのbashループ結果値を同じ行に出力しますか?
123-abc-thething01, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething02, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
123-abc-thething03, 6, 1234, metadata, metadata, [email protected], metadata, 123abc
スクリプトがうまくいけば達成する実行した後...
123-abc-thething01 - [email protected]
123-abc-thething02 - [email protected]
123-abc-thething03 - [email protected]
瞬間、私は正しい値を引いて、次のコードを持っている、しかしそれはあります1行1行にvar1とvar2の値を出力し、次に1行にvar1とvar2を出力し、次に新しい行の2行目のvar2をvar2に出力するのではなく、次のように 'var1'をすべて出力してから 'var2'等
123-abc-thething01 123-abc-thething02 123-abc-thething03
[email protected] [email protected] [email protected]
私はこれを行うさまざまな方法を試してみましたが、私はちょっと困惑しています。私は現時点では非常にbashと強くないので、どんな助けも大いに感謝されるでしょう。ありがとう。
#!/bin/bash
for i in logfile.txt
do
var1=$(cat logfile.txt | awk '{print $1}' | sed 's/,//g')
var2=$(cat logfile.txt | grep -o '[[:alnum:]+\.\_\-]*@[[:alnum:]+\.\_\-]*')
done
echo ${var1}
echo ${var2}
あなたはawk 'awk -F、 '{print $ 1" - "$ 6}" file " – 123
だけを使ってテキストファイルを解析するためにシェルスクリプトを使うべきではありません。 /([:alnum:] ._-] + @ [[:alnum:] ._-] +ならばperl 'perl -ne 'は" $ 1 - $ 2 \ n " )/ '' – 123
ありがとう!そう簡単に私はこのアプローチで行くと思います。 – Dronzil