0
這個問題是跟我之前關於讀取文件某些行的問題的後續。 我讀我的文件如下:bash腳本文件讀取,bash刪除空格
while read line
do
if [ "$line" == "SUMMARY OF POLARIZATION CALCULATION" ]; then
for i in {1..9}
do
read line
echo $line >> ../../Summary.out
done
break
fi
done < ../Tutorial1_1.out
,看起來像這樣:
.
.
.
O (0.0000, 0.5000, 0.4834) sp(1) 6.00 [ 0.000000e+00, 1.884956e+01, 1.822516e+01]
---------------------------------------------------------------------------------------
Total ionic phase (rad) sp(1) [ 7.539822e+01, 7.539822e+01, 1.119960e+02]
Total ionic phase wrap. (rad) sp(1) [ 8.633172e-11, 8.633172e-11, -1.101384e+00]
Ionic polarization (C/m2) sp(1) [ 1.365657e-11, 1.365657e-11, -1.760570e-01]
=======================================================================================
SUMMARY OF POLARIZATION CALCULATION
=======================================================================================
Value | spin | dir(1) | dir(2) | dir(3)
---------------------------------------------------------------------------------------
Electronic polarization (C/m2) sp(1) [-8.783054e-12, -8.828765e-13, 4.803326e-01]
Ionic polarization (C/m2) sp(1) [ 1.365657e-11, 1.365657e-11, -1.760570e-01]
Tot. spin polariz.=Pion+Pel (C/m2) sp(1) [ 4.873517e-12, 1.277369e-11, 3.042756e-01]
---------------------------------------------------------------------------------------
TOTAL POLARIZATION (C/m2) both [ 4.873517e-12, 1.277369e-11, 3.042756e-01]
=======================================================================================
Completed using BerryPI version: +++Version 1.2 (Mar 12, 2014)
...
所以上面的代碼只取9條線後的「摘要..」和寫入Summary.out文件。然而,當它寫它搞砸了所有的空間,所以我得到如下:
=======================================================================================
Value | spin | dir(1) | dir(2) | dir(3)
---------------------------------------------------------------------------------------
Electronic polarization (C/m2) sp(1) [-8.783054e-12, -8.828765e-13, 4.803326e-01]
Ionic polarization (C/m2) sp(1) [ 1.365657e-11, 1.365657e-11, -1.760570e-01]
Tot. spin polariz.=Pion+Pel (C/m2) sp(1) [ 4.873517e-12, 1.277369e-11, 3.042756e-01]
---------------------------------------------------------------------------------------
TOTAL POLARIZATION (C/m2) both [ 4.873517e-12, 1.277369e-11, 3.042756e-01]
=======================================================================================
我怎樣才能解決這個問題,有沒有會讀,準確地寫一個字符串,因爲它是在輸入文件中的標誌?
告訴我,如果我理解這個權利。沒有「」字符串變量被視爲一個數組,其中只有非空元素被打印,而與「」它把它看作一個字符串? – 2014-09-03 16:19:04
最好不要把它看作一個數組(因爲'bash'也有數組)。相反,把'$ line'想象成一個宏。字符串'$ line'被變量'line'的內容替換,就像'echo ab'將簡單地打印'ab'(多個空格被一個空格替換),所以'echo $ line'將會處理任何'$ line'中的空格作爲簡單的字段分隔符運行,每個字段之間打印一個空格。 – chepner 2014-09-03 17:54:21
但是,爲了保留前導和尾隨空白,你需要使用'IFS = read'而不是'read',並且引用'$ line'的擴展。 – chepner 2014-09-03 17:55:13