1. 程式人生 > >linux下的格式問題,與讀取不了最後一行

linux下的格式問題,與讀取不了最後一行



vim中顯示windows或者dos的換行符^M

linux下,如果需要在vim中檢視^M,需要使用如下命令:e ++ff=unix %

有時候,我們在 Linux 中開啟曾在 Win 中編輯過的檔案時,會在行尾看到 ^M字元。雖然,這並不影響什麼,但心裡面還是有點不痛快。如果想要刪除這些 ^M 字元,可以使用 Vim 來輕鬆搞定它。

Vim 的命令模式中輸入 :%s/^M$//g 後,回車即會自動刪除該檔案中的所有 ^M 字元。

^M 注意要用 Ctrl + V Ctrl + M 來輸入

Linuxwindows下回車換行格式轉換回車換行結尾轉換

一、

windows的檔案到linux下的轉換方法:

1. sed命令替換

sed -e 's/^M//g' original.txt > target.txt (注意^M Linux/Unix下是這樣輸入的:先按CTRL+v,接著按CTRL+SHIFT+m,呵呵~~ 其實俺主要就是為了記錄一下這個輸入方法)

2. vi中替換

:%s/^M//g
3.sed
命令替換
sed -e 's/.$//' dos.txt > linux.txt

二、Linux文字傳到windows系統,轉換方法:
sed -e 's/$/\r/' 1pnet.txt >dos.txt

while read的關於讀取最後一行的問題

windows使用\r\n作為行結尾,而unix使用\n作為行結尾使用notepad編輯的檔案,如果最後一行沒有回車,採用二進位制方式上傳到unix後,因為最後一行沒有\n,會被認為是不完整的檔案迴圈讀到最後一行後,認為達到檔案結尾,那個read SERVER會返回假,迴圈結束。


1
、最好使用dos2unix命令轉換為unix格式
2
、實在不行,只能在while迴圈之後,再新增一個額外處理

[shell] while read line最後一行讀不出

如果存在一個文字${file},使用while read line去讀取時發現,最後一行無法讀出:

while

read linedo
echo "$line 1 n"
done< ${file}

如何解決這種情況呢,可以考慮以下的方法:

DONE=false
until $DONE 

do read || DONE=true
echo "$REPLY 1 n"
done< ${files}

相關推薦

linux格式問題讀取最後一行

 vim中顯示windows或者dos的換行符^M linux下,如果需要在vim中檢視^M,需要使用如下命令:e ++ff=unix % 。 有時候,我們在 Linux 中開啟曾在 Win 中編輯過的檔案時,會在行尾看到 ^M字元。雖然,這並不影

linux編譯java檔案識別中文

我報的錯誤是這樣的:xxx.java:15: 錯誤: 編碼UTF8的不可對映字元。中文無法編譯,查了一下發現下面的解決方法:原因是我的java檔案的格式為gbk,我是直接在windows下寫好程式碼,然後直接放到linux上的。Linux下編碼格式預設為UTF-8,所以用ja

LINUX使用風格特色讀去檔案最後一行兩次

fgets兩次讀取檔案最後一行?#include <stdlib.h>;#include <stdio.h>;int main(){FILE *fp;char ch[11];fp = fopen("jjk.txt","r");while(!feof(f

Linux系統Jenkins讀取到環境變數的問題

#!/bin/bash -ilex-i: 互動式sh ;l:登陸式sh在指令碼之上加這行參考:原因講解:http://blog.csdn.net/zzusimon/article/details/570

linux的select簡直太奇葩:1024限定的只是監聽的個數還是檔案描述符的最大值注意是值

轉自:http://m.blog.csdn.net/blog/wuzili1234/12450451 我原來自以為對select就算不熟,基本原理和使用方法也略知一二了,做了一年多的伺服器程式設計,好歹知道linux下的select不支援超過1024個的描述符,好歹知道

linux關閉防火牆重新啟動的情況

問題描述:我用systemctl stop firewalld 命令關閉了防火牆後無法啟動(報錯 unit is masked) 解決方法 :先解鎖  命令 systemctl unmask firewalld,然後在執行啟動命令  systemctl start fire

Linux系統刪除亂碼檔案或者目錄rm刪除

Linux系統下解壓zip或rar檔案後可能會產生亂碼檔案或者目錄,使用rm -rf fileName 無法刪除,rm -rf 刪除上一級目錄可以,但是需要先備份,比較費時間, 其實可以根據索引節點(i節點) 進行刪除。 [[email protected] Ul

Linux系統程式設計學習常見問題(一):VMware虛擬機器Ubuntu18.04突然上網的問題解決方案

問題描述:VMware虛擬機器下Ubuntu18.04突然上不了網的問題:如下圖所示:   更改這裡的三種連線方式都是這樣  2.  分析:IP衝突或者配置出了問題,需重新更新設定。 3.  解決: (1)將模式調整為

基於TCP協議實現Linux客戶端伺服器之間的通訊實現多執行緒、多程序伺服器

TCP是TCP/IP協議族中一個比較重要的協議,這是一種可靠、建立連結、面向位元組流的傳輸,工作在傳輸層。和TCP相對的不可靠、無連結、面向資料報的協議UDP,瞭解UDP客戶端與伺服器之間通訊請戳UDP協議實現的伺服器與客戶端通訊 TCP協議建立連線 首

在win8安裝tomcat8.0後點選bin 目錄的啟動檔案startup.bat後控制檯一閃而過根本啟動tomcat

tomcat 8 解壓解壓 然後執行 \bin\startup.bat ,如果是黑色視窗一閃就過的話. 開啟 startup.bat檔案找到 搜尋 set EXECUTABLE ,然後在這行上面加上一句 set JAVA_HOME= 你的jdk安裝位置的絕對路徑

Linux環境變數配置出錯導致登入......

Linux環境變數配置出錯導致的後果: 1、登陸不了 linux 了 2、基本命令全失效了(如:ls,vi,sudo,su,find,cp等),除了cd命令可用。 解決方法有如下三步: 1、從圖形登陸

linux系統程式設計解決scanf能輸入空格的問題

在linux系統下,使用scanf函式不能輸入空格,所以編者就自己封裝了一個EncapScanf函式,希望可以幫助到讀者。 #include <stdio.h> #include <stdlib.h> #include <string.h&g

解決linuxjdk版本安裝版本一致

在linux下安裝jdk後,利用java -version檢視版本使,發現不是自己所安裝的jdk版本,此時,不要著急,請看如下解決辦法: which java ——檢視預設的jdk安裝路徑 加

IDEA 中讀取配置檔案以及ClassPathXmlApplicationContextFileSystemXmlApplicationContext

在學習Spring的時候(看的《Spring4.x企業應用開發實戰》),書上用的IDE 是 Myeclipse,這裡用的是IDEA。在編譯: String configPath = "com/baobaotao/advice/beans.xml"; Appli

sysaux在沒有備份的情況資料塊損壞資料庫啟動處理

具體的思路:              (一) 考慮在控制檔案中把sysaux表空間給剔除掉,啟動資料庫                   1 建立控制檔案                   alter database backup controlfile to tr

linux連個檔案都刪除什麼鬼!

## 前言 最近不是redis 6.0 出了嗎,官網介紹最新穩定版本是 6.0.3 。於是,我就準備在自己的破小伺服器上安裝一下。於是,出現了後續的糟心事 (linux 下的檔案正常**刪除不了**)。 下載了最新版本,在原始碼包裡邊 make 之後,出現了好幾個錯誤,上網查了下,有人說最新版本有問題,建

【mysql】service mysql start出錯mysql啟動解決mysql: unrecognized service錯誤

開機 init.d starting 設置 tin 執行 rest root lan service MySQL start出錯,mysql啟動不了,解決mysql: unrecognized service錯誤的方法如下: [[email protected]/

linux 如何查看mysql跑哪些服務

位置 netstat host 導致 pro ive comm http lin ps -ef|grep mysql //現查處PID 然後 lsof -p +pid 就可以看到mysql跑的服務 百度出了別人的方法 當遇到mysql很卡,然後又想知

Linux MySQL 安裝卸載

word stat client int etc dpkg init net 是否 參考博客:http://www.cnblogs.com/steven_oyj/archive/2010/05/24/1742808.html http://www.linuxidc.com/

linux開發解決cocos2d-x中編譯出現的一個小問題, undefined reference to symbol &#39;pthread_create@@GLIBC_2.2.5&#39;

water span x86 code bject data- ace 技術分享 inux 解決cocos2d-x中編譯出現的一個小問題 對於cocos2d-x 2.×中編譯中,若頭文件裏引入了#include "cocos-ext.h",在進行C++編譯的時候會遇到例