while read line無法讀取最後一行的問題
while read line讀取檔案時,如果檔案最後一行之後沒有換行符\n,則read讀取最後一行時遇到檔案結束符EOF,迴圈終止,雖然此時$line記憶體有最後一行,但程式已經沒有機會再處理此行,因此可以通過以下程式碼來解決此問題:
while read line ||[[-n ${line}]];do...done
這樣當檔案沒有結束時不會測試-n $line,當遇到檔案結束時,仍然可以通過測試$line是否有內容來進行繼續處理。
相關推薦
while read line無法讀取最後一行的問題
while read line讀取檔案時,如果檔案最後一行之後沒有換行符\n,則read讀取最後一行時遇到檔案結束符EOF,迴圈終止,雖然此時$line記憶體有最後一行,但程式已經沒有機會再處理此行,因此可以通過以下程式碼來解決此問題:while read line ||[[
shell中while read line do done只讀取一行的問題
從自己以前部落格弄過來的。 今天寫一個指令碼遠端去定期清理日誌,遇到一個問題;如下,只能讀出第一行,程式就退出了。 原因是迴圈裡 ssh 進入了另一個程序,導致輸入中斷。 後來改為 for ds_ip in `cat ds_list.txt` 將每一行都預
while read line 的字符串截取
for 都在 inf 變量 sha 字符 如果 pre 來看 有的時候,循環文本如下 root@pts/1 # cat file |head -10 2961047 788934832 797699249 2018-01-30-10 2961054 801973977 79
關於while read line 循環中變量作用域的問題
作用 完成 nbsp 默認 使用 從數據 sql 語句 發生 文件 前一陣用shell寫了一個從數據庫中抽取數據生成.xml文件的腳本,要求是每個文件中只生成1000條數據。於是用到了while read line 作為循環。 在制作文件計數器的時候發現了一個問題,在執行的
shell指令碼中的讀檔案(while read line)與寫檔案(here document)
shell指令碼中如何讀取外部檔案並進行相關操作呢?正規化如下,是要背滴: while read line; do process $line done < file 如何在寫中將內容寫入新檔案呢,要用到here document,一種特殊的重定向技術,小范式如下,也
fgets()重複讀取最後一行的分析及解決方法
使用 fgets() 讀取一個文字檔案的時候,如果讀取的 方法不恰當,就有可能造成重複讀取最後一行的問題。具體如下。 (1) 在 Windows 平臺上, 假設有 test.txt ,內容如下: this is line 1 this is lin
[shell] while read line 與for迴圈的區別
while read line 是一次性將檔案資訊讀入並賦值給變數line ,while中使用重定向機制,檔案中的所有資訊都被讀入並重定向給了整個while 語句中的line 變數。 for是每次讀取檔案中一個以空格為分割符的字串。 如下示例指令碼: #/bin/
[shell]while read line 與 for迴圈的區別
while read line 是一次性將檔案資訊讀入並賦值給變數line ,while中使用重定向機制,檔案中的所有資訊都被讀入並重定向給了整個while 語句中的line 變數。 for是每次讀取檔案中一個以空格為分割符的字串。 如下示例指令碼: #/b
19.Shell編程進階,數組,字符串(for,select,while read line,dec
追加元素 code glob arguments rcfile 變量初始化 引用 變量賦值 option for循環 for 變量名 in 列表;do循環體done 執行機制:依次將列表中的元素賦值給“變量名” ; 每次賦值後即執行一次循環體; 直到列表中的元素耗盡,循環
21 讀取文件最後一行
IV 數據 開始 see 範圍 utf utf-8 文件指針 讀取文件 1,當讀取的文件不大時 #coding:utf-8 ‘‘‘ fname為所讀xx.txt文件 輸出為:文件第一行和最後一行 ‘‘‘ fname = ‘test.txt‘ with open(fnam
VC++讀取檔案的最後一行
FILE* fp = fopen("Datalog.dat", "a+"); char Vall[201]; while(NULL != fgets(Vall, 200, fp)) &n
python3讀取日誌檔案的最後一行內容
(1)模擬建立一個日誌檔案.txt 關鍵字 日期和時間 來源 事件ID 任務類別 稽核成功 2018/9/11 12:17:15 Security-Auditing 4672 Special Logon 稽核成功
java快速讀取文字檔案最後一行資料內容,文字檔案非常大
http://www.iteye.com/problems/42748 public static void main(String[] args) throws Exception { File file = new File("E:/a.txt"); // 100M
matlab對於固定長度的行的文字,最後一行的讀取
基本實現想法是: 因為每一行的長度是固定的,大小也是固定的(下面的例子是42,因此下面程式碼的引數會有 (fisize/42)),所以整個文字的大小除以每一行的大小就可以得到這個文字的行數; 再把這個行數用到textscan函式中,就可以直接讀取最後一行的內
python中讀取txt檔案,windows下麼有毛病,到Linux下總是隻有最後一行有效,怎麼解決?
比如:這個txt有5行, fin = open('F:\\temp\\name.txt','r') for line in fin: strsname = line.rstrip('\n') AAA('F:\\temp','F:\\temp\\2',str
C++fstream,ifstream和outstream讀取檔案最後一行注意
char cntext[1024] = {0}; fstream cnText("E:\\Work\\Diagnose\\Chrysler\\BAIC\\CN_TEXT.txt"); //cnText.open(("E:\\Work\\Diagnose\\Chrysle
RandomAccessFile讀取文字最後一行以及倒序讀取文字
首先需要說明幾點:1.long len = rf.length();獲得的檔案長度,在seek時是從0到len-1的,如果seek了len,那麼用read方法返回-1,代表已經到了檔案末尾。所以索引是0到length-1 2.用了RandomAccessFile的read方
java 倒序讀取檔案(最後一行開始讀取)
Java程式碼 package cn.com.songjy.test.io; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAcce
shell讀取檔案第一行和最後一行,小數的運算比較
1. 讀取檔案的第一行:head -n +1 file.txt 讀取檔案的最後一行: tail -n -1 file.txt echo 12:30:55 | cut -d: -f 1 結果為12,意思為將字串12:30:55以:符號進行拆分,輸出索引為1的值。 -d後跟以什麼字元進行拆分, -f 後的
linux下的格式問題,與讀取不了最後一行
vim中顯示windows或者dos的換行符^M linux下,如果需要在vim中檢視^M,需要使用如下命令:e ++ff=unix % 。 有時候,我們在 Linux 中開啟曾在 Win 中編輯過的檔案時,會在行尾看到 ^M字元。雖然,這並不影