このようなファイルがあります。
Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10
日付フィールドを抽出し、その日付を区切り記号($)を持つ列として追加する必要があります。日付はファイルのどこにでも表示できます。
[Fri Jun 10 06:11:59 2016]$Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
[Fri Jun 11 06:11:59 2016]$Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10
ベストアンサー1
日付が常に[
...に含まれていて、]
これが行の最初であると仮定すると、[
さまざまな方法を使用できます。私が一般的に使用する2つのこと:
2つのコマンドを使用してくださいcut
(怠惰なオプションですが、その機能を理解するのは簡単です)。
cut -d'[' -f2 $srcfile | cut -d ']' -f1
sed
単純な正規表現を使用する標準オプション:
sed 's/.*\[\([^]]*\)].*/\1/' $srcfile
出力が複数の文字を含むより複雑な場合は、より複雑な文字列を含むオプションを使用する必要が[
あります。sed
sed 's/.*\[\(... ... .. ..:..:.. ....\)].*/\1/' $srcfile
編集:修正された質問は文字列の前に追加し、残りの行は変更しないようにします。だから私たちはsed
少し変更されたバリエーションを使います:
sed 's/\(.*\[\(... ... .. ..:..:.. ....\)].*\)/[\2]$\1/' $srcfile
結果:
[Fri Jun 10 06:11:59 2016]$Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
[Fri Jun 11 06:11:59 2016]$Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10