LoginSignup
0
1

More than 5 years have passed since last update.

grepの使い方 備忘録。shellで 特定の文字列以降を抽出

Posted at

結論
grep -Po 'キーワード\K[^ ]+' <<< 入力データ >> 出力先

例)gnuplotで表示するためのテキストファイル準備[VASP計算用 in Linux]

\#!/bin/bash 
\#各フォルダのOSZICARkからエネルギーの値を抽出したい
WORKDIR=`pwd`
echo "" > energy
for Q in 0.97 0.98  0.99   1.0    1.01   ;
do
  cd \$WORKDIR/\$Q
echo "$Q"  |tr '\n' '\t' >> ../energy
tail -n 1 OSZICAR   >> ../energy
done



0.97 4 F= -.21544349E+02 E0= -.21515451E+02 d E =-.259105E-04
0.98 4 F= -.21544349E+02 E0= -.21515451E+02 d E =-.259105E-04
0.99 4 F= -.21544349E+02 E0= -.21515451E+02 d E =-.259106E-04
1.0 4 F= -.21544349E+02 E0= -.21515451E+02 d E =-.259107E-04
1.01 4 F= -.21544349E+02 E0= -.21515451E+02 d E =-.259106E-04

を得たけど、本当は[d E =]以降を集めて

0.97  -.259105E-04
0.98  -.259105E-04
0.99  -.259106E-04
1.0  -.259107E-04
1.01  -.259106E-04

が欲しい。

tail -n 1 OSZICAR >> ../energy

grep -Po 'd E =\K[^ ]+' <<<`tail -n 1 OSZICAR` >> ../energy
に置き換えて解決!

\K[^ ]+とか正確に覚える自信がないので備忘録として保存

参考リンク
https://askubuntu.com/questions/697120/extract-word-from-string-using-grep-sed-awk

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1