2017-06-01 33 views
-1

我想知道如何grep只在文件中的Atoms.Timestep和遞增Timestep的值?例如,添加200.grep和增加值

我試圖使用bash文件,但它不工作。

Atoms. Timestep: 0 
1 76.494 75.0579 73.6777 
2 75.5756 74.3821 74.9533 
3 75.4282 72.7064 74.7586 
4 74.6055 72.4862 73.3068 
5 75.4501 73.045 71.9846 
6 75.6282 74.7559 72.2756 
+5

歡迎的StackOverflow!請發佈您已經嘗試過的代碼,獲得的輸出以及您期望的輸出。通過這種方式,您很快就能得到答案。另請參閱如何生成[如何創建最小,完整和可驗證示例](https://stackoverflow.com/help/mcve) –

+0

預期的輸出是什麼? – Esteban

+0

預計輸出Timestep的值從0到200原子。時間步長:200 1 76.494 75.0579 73.6777 2 75.5756 74.3821 74.9533 3 75.4282 72.7064 74.7586 4 74.6055 72.4862 73.3068 5 75.4501 73.045 71.9846 6 75.6282 74.7559 72.2756 – syarah88

回答

0

試試這個:

cat your_file | grep -Eo "[0-9]+\.[0-9]+|[0-9]*" | sort | awk '{print $1+200}' 

輸出:

200 
201 
202 
203 
204 
205 
206 
271.985 
272.276 
272.486 
272.706 
273.045 
273.307 
273.678 
274.382 
274.606 
274.756 
274.759 
274.953 
275.058 
275.428 
275.45 
275.576 
275.628 
276.494 

但是,這輪長達3個數字。

下面的行將保留4個小數點。

cat your_file | grep -Eo "[0-9]+\.[0-9]+|[0-9]*" | sort | awk '{printf "%.4f\n", $1+200}' 

輸出:

200.0000 
200.0000 
201.0000 
202.0000 
203.0000 
204.0000 
205.0000 
206.0000 
271.9846 
272.2756 
272.4862 
272.7064 
273.0450 
273.3068 
273.6777 
274.3821 
274.6055 
274.7559 
274.7586 
274.9533 
275.0579 
275.4282 
275.4501 
275.5756 
275.6282 
276.4940 
+0

'貓| grep |排序| awk',呃,這看起來像太多的管道。首先,'grep ... file'和'cat file |相同grep ...'。 – fedorqui

+0

但更易於爲初學者imho閱讀。 – JazzCat