ファイルから経過時間を出力する必要があります。 「過去」の前の値が必要です2:10:42
。
文書の内容:
312.90user 15.57system 2:10:42elapsed 4%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (1major+152440minor)pagefaults 0swaps
答え1
Perlの使用は比較的簡単です。
perl -n -E '/([0-9:]+)elapsed/ and say $1' «FILE»
「elapsed」(空白なし)という単語の前の時間のようなものを見つけることに注意してください。他のファイルに適用すると、誤検出が発生する可能性があります。また、最初の行だけでなく、ファイル内のすべての行を確認し、見つかった経過時間を印刷します。
答え2
「(time)elapsed」を含む行で「(anything)(space)(time)elapsed(anything)」を検索し、すべてを「(time)」に置き換えて結果行を印刷します。
sed -n '/[0-9:]*elapsed/ { s/.* \([0-9:]*\)elapsed.*/\1/;p }' input > output
答え3
これを行う:
データが次のファイルにあるとします。文書次のことができます。
$ head -1 file | awk '{ print $3 }' | sed 's/elapsed//'
次を返します。2:10:42
それを破壊する:
次のコマンドを使用してファイルの最初の行を取得します。
head -1 file
大変なことは次の人がする。アッ:
awk '{ print $3 }'
3番目のデータブロックのみを印刷します2:10:42elapsed
。
その後、使用sed設定する文字列エディタ:
sed 's/elapsed//'
目的の場所に出力をリダイレクトできます。たとえば、次のように追加します。
> output.text
2:10:42
名前付きファイルに出力出力.txt
上記はすべての内容を中断(交換)します。出力.txt文書。ファイルの末尾にデータを追加する>>
代わりに>
。