awk
/operatorについて質問がありますsed
。次の行が繰り返される大きなファイルがあります。
Expression loweWallrhoPhi : sum=-6.97168e-09
Expression leftWallrhoPhi : sum=6.97168e-09
Expression lowerWallPhi : sum=-5.12623e-12
Expression leftWallPhi : sum=5.12623e-12
Expression loweWallrhoUSf : sum=-6.936e-09
Expression leftWallrhoUSf : sum=6.97169e-09
Expression lowerWallUSf : sum=-5.1e-12
Expression leftWallUSf : sum=5.12624e-12
sum
各場合のキーワードの後に出てくる値を別々のファイルに抽出したいと思います。一度に可能でしょうか?
ベストアンサー1
そしてgrep
:
grep -oP 'sum=\K.*' inpufile > outputfile
-P
以前に一致した文字を無視するための(perl-regexp)パラメータを使用したgrepサポート\K
。
そしてawk
:
awk -F"=" '{ print $NF; }' inputfile > outputfile
存在するアッこの変数は、NF
現在のレコード/行の合計フィールド数を表し、最後のフィールド番号を指すため、それ$NF
に応じて値が割り当てられます。
そしてsed
:
sed 's/^.*sum=//' inpufile > outputfile
^.*=sum
.*
行の最初の文字()と最後の文字()の間の^
すべての文字()をsum=
空白文字に置き換えます。
結果:
-6.97168e-09
6.97168e-09
-5.12623e-12
5.12623e-12
-6.936e-09
6.97169e-09
-5.1e-12
5.12624e-12
そしてcut
:
cut -d'=' -f2 inputfile > outputfile
同じ値を同じファイルに別々に保存するには、awk
次のようにします。
awk -F"=" '{print $NF >($NF); }' inputfile > outputfile