導航:首頁 > 操作系統 > linuxn換行符

linuxn換行符

發布時間:2023-05-09 17:13:06

1. linux環境用java生成文件後的換行符問題

shell命令的話unix2dos
直接操汪衡作文件的話,記住,append是在最後加\r,就變成了\n\首晌r,而不是者陵鋒\r\n

2. 「LINUX刪掉換行符」是什麼

去掉文件中的換行符x0dx0a(1)tr命令的操作是針對文件的操作,它把整個文本當做操作的對象,所以可以直接去除文件中的換行符x0dx0atr '\n' ' ' < filex0dx0a(2)sed的操作對象是行.而作為行分割符號的回車符,本身是不屬於行的枯肢.所以sed中必須加上N命令,把下一行的內容添加到當前的pattern space中,這樣實際上是把相鄰的2行合並了.下一次仍然是先n,再p,再N,開始新的輪回:x0dx0acat file | sed 'N;s/\n/ /'x0dx0a所以上面的語句是不能把沒察世文件內容合並為一行的,到底該怎麼寫沒困,我暫時沒有想到,呵呵x0dx0a(3)直接用awkx0dx0aawk '{printf("%s ",$0)}' filex0dx0a(4)當然,用echo也是可以的:x0dx0awhile read line;do echo -n "$line"; done < awk_help.txt, 這樣,可以把awk_help.txt的內容合並為一行x0dx0ased -e "s#\[/r][/r][/n]#\[/r][/n]#g" file

3. Windows和Linux換行符的區別

'\r'是回車,前者使游標到行首,(carriage return)
'\n'是換行,後者使游標下移一格,(line feed)

\r 是回車,return
\n 是換行,newline
對於換行這個動作,unix下一般只有一個0x0A表示換行("\n"),windows下一般都是0x0D和0x0A兩個字元("\r\n"),蘋果機(MAC OS系統)則採用回車符CR表示下一行(\r)

Unix系統里,每行結尾只有「<換行>」,即「\n」;
Windows系統裡面,每行結尾是「<回車><換行>」,即「\r\n」;
Mac系統里,每行結尾是「<回車>」,即「\r」。
一個直接後果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix下打開的話,在每行的結尾會多車一個^M字元。
Dos和windows採用回車+換行CR/LF表示下一行,即^M$($不是換行符的表示,換行符沒有表示出來,$是文本結束EOF的表示)
而UNIX/Linux採用換行符LF表示下一行,即\n
蘋果機(MAC OS系統)則採用回車符CR表示下一行,即\r

CR用符號'\r'表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D;
LF使用'\n'符號表示, ASCII代碼是10, 十六制為0x0A. 所彎擾以Windows平台上換行在文本文件中是使用 0d 0a 兩個位元組表示, 而UNIX和蘋果平台上換行則是使用0a或0d一個字埋悄旦節表示.

由於dos風格的換行使用\r\n,把這樣的文件上傳到unix,有些版本的vi不能識別\r,所以vi顯示時在行尾會出現^M出來,但是有些就能識別運猜\r\n,正常顯示回車換行。

4. Linux /r /n

CR :Carriage Return,對應ASCII中轉義字元\r ,0x0D(asc碼是13) 指的是「回車」   \r是把游標置於本行行首

LF :Linefeed,對應ASCII中轉義字元\n ,0x0A(asc碼是10) 指的是「換行」    \n是把游標置於下一行的同一列

CRLF:Carriage Return & Linefeed,\r\n , 0x0D + 0x0A ,指的是回車換行    \r\n把游標置滑野於下一行行首 

^M的原因 : ^M 注意要用 Ctrl + V Ctrl + M 來輸入

Dos、Windows 格式的文件,用 0D 0A (CR+LF)作為換行符,而Unix 的則是以0A(LF) 作為換行符.所以dos 底下的文本文件到了unix的話,換行符就會多出來一個 0D(CR) 顯示為 ^M,在linux中vim中無法顯示\r

因為ascii中對應的不是linux中的標准acsii字元,其實困胡其對應的ASCII碼十進制形式是: 13 (無顯示形式);對應的八進制形式 15 (顯示為^M)從二進制層面來理解,即可以刪除換行符前面對應的字元位元組(我瞎編的,應該對的),在字元層面直接刪除^M這個位元組即可

方法1:

在命令模式下:輸入:%s/^M//g 然後,回車即可替換

注,其中」^M」的輸入,分別是「Ctrl+v」、「Ctrl+M」鍵生成的

方法2:

使用vi打開文本文件

vi dos.txt

命令模式下輸入

:set fileformat=unix

:w

方法3:

使用信尺喊sed 工具

sed 』s/^M//』 filename > tmp_filename

方法4:

既然window下的回車符多了『\r』,那麼當然通過刪除『\r』 ,也可以實現:

tr -d 『\r』

或者:

sed -i 's/\r//' startup.sh

window下默認是 \r\n

linux下是\n

unix下是\r

  現在, 我們看看本文開頭部分的問題。 假設有一個linux下的unix.txt文件,  那麼, 它在文件中的換行標志是:\n, 現在把unix.txt拷貝靠Windows上, 那好啊, Windows那雙犀利的眼神彷彿是在對unix.txt文件說: 別跟我整什麼\n, 我只認識文件中的\r\n, 如果你這個unix.txt文件裡面有\r\n, 那我就認為是換行符, 否則, 我不認你。 如此一來, Windows壓根就找不到unix.txt中的\r\n, 所以, 對於Windows而言, 壓根就沒有發現unix.txt有任何換行, 所以, 我們從Windows上看到的unix.txt文件顯示在一行裡面。 

5. linux系統符號說明

    01 系統特殊符號

    02 系統通配符號

    03 系統正則符號

    說明: 查詢信息的時候,會帶來便利

    1) 基礎符號系列

      $ 

      a 調取變數信息

      b 區分用戶類型  $ 普通用戶

      c 結合awk對文件進行取列  

    xargs -n 2 <test01.txt|awk '{print $2}'

  !

  a 強制的作用  wq!

  b 可以實現取反

awk '!/oldgirl/' test02.txt (排除oldgirl)

find /oldboy_dir/ ! -type f (排除文件)

  c !信息  可以快速調取執行歷史命令(慎用)

    cat ~/.bash_history  -- 記錄歷史命令信息, 但是不會實時記錄

history              -- 顯示所有輸入過的歷史命令

      |

  a 實現管道功能

    將前一個命令執行的結果交給管道後面的命令進行處理

一般管道符號 會經常和xargs命令配合使用

批量刪除操作

find /oldboy -type f -name "oldboy*.txt"|xargs rm

find /oldboy_dir/ -type f -delete

    find /oldboy_dir/ -type f -exec rm -f {} \;

    查找指定數據信息進行復制

    find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;

查找指定數據信息進行移動

    find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;

    xargs(火眼金睛)後面跟的命令,不識別別名信息

  #

    a 表示對配置文件信息進行注釋

    b 表示用戶的身份信息 超級管理員用戶

2) 引號符號系列

      "" 基本上和單引號功能類似 但是可以對一些特殊符號做出解析  $ `命令`==$(命令)

      '' 裡面編寫的什麼內容就輸出什麼內容  所見即所得

  作用:

  01. 指定需要輸出的信息

  02. 利用引號將空格分隔的信息匯總為一個整體

      ``($()) 將引號裡面命令執行結果,交給引號外面命令進行使用  

3) 重定向符號

  >/1>  標准輸出重定向符號

  >>/1>> 標准輸出追加重定向符號

  2> 錯誤輸出重定向符號

  2>> 錯誤輸出追加重定向符號

  <  標准輸入重定向符號

      tr xargs

  << 標准輸入追加重定向符號

4) 邏輯符號系列

  邏輯: 在完成一件事情的時候,有合理先後順序

  &&  前一個命令操作執行成功了,再操作執行後面的命令

  ||  前一個命令操作執行失敗了,再操作執行後面的命令

  mkdir /old_dir && echo "create dir sucess" || echo "create dir failed"

      create dir sucess

      mkdi /old_dir && echo "create dir sucess" || echo "create dir failed"

      -bash: mkdi: command not found

      create dir failed

    什麼通配符號: 用於匹配文件名稱信息, 便於快速查找文件信息 find

    *  匹配所有信息

      find /oldboy -type f -name "oldboy*"  ---以oldboy開頭的信息都查詢出來

  find /oldboy -type f -name "*oldboy"  ---以oldboy開頭的信息都查詢出來

  find /oldboy -type f -name "oldgirl*oldboy" 

                                          ---以oldgirl 開頭的信息

    以oldboy  結尾的信息都查詢出來

{} 產生序列信息

  連續序列:

    echo {01..05}

        echo {a..z}

        echo {A..Z}

  生成不連續序列

  a 有規律的不連續序列

echo {01..05..2}

        01 03 05

        echo {a..z..2}

      b 沒規律的不連續序列

echo {www,bbs,blog}

        www bbs blog

  生成組合序列

        echo {1,2}{a,b}

        1a 1b 2a 2b

        echo {1,2}{a,b}{A,B}

        1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB

    echo A{a,b}

        Aa Ab  

      A=oldboy.txt

      echo oldboy.txt{a,b}  

      oldboy.txta oldboy.txtb  

  echo A{,b}

      A Ab

  A=oldboy.txt

  b=.bak

  cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak

  快速備份文件命令

  cp oldboy.txt{,.bak}

  快速還原數據方法

  cp oldboy.txt{.bak,}

  echo A{B,}

      AB A

  oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt

    基礎正則符號:basic regular expression    (BRE)

擴展正則符號:extended regular expression (ERE)

基礎正則符號:

    a 尖角符號:^

      以什麼開頭的信息進行過濾出來

  grep -v "^#" nginx.conf.default >nginx.conf(對不需要關注的信息取反)

  常見錯誤

  find / -type f -name "^oldboy"  錯誤

  find / -type f -name "oldboy*"  正確

    b 美元符號:$

  以什麼結尾的信息進行過濾出來

  以m結尾信息, 並且顯示上1行 和 下2行的信息

      grep "m$" -A 2 -B 1 test.txt

      常見錯誤:

  如果過濾不出來,確認每行結尾是否有空格信息

  方法一:

  cat -A test.txt

  方法二

      vim 底行模式輸入命令 --- :set list

c 尖角美元符號:^$

      取出文件中空行信息

      grep "^$" test.txt

      grep -v "^$" test.txt

d 點符號: .

  表示匹配任意一個且只有一個字元

  grep "." test.txt  -o(更直觀的顯示過程)

e 星號符號: *

  匹配星號前面一個字元連續出現0次或多次

f 點和星號組合: .*

      匹配所有信息

  說明: 正則符號在匹配數據信息的時候具有貪婪特性

避免貪婪特性的方法,是在指定一行信息中唯一節點信息

g 轉譯符號: \

1) 將一些有意義的符號進行轉譯, 變為一個普通符號

grep "\.$" ~/oldboy_test.txt

2) 將一些沒有意義的符號進行轉譯,變為有意義符號

    \n  換行符號 linux

    3) 可以將擴展正則符號轉換成普通正則讓grep sed命令可以直接識別'

grep "o\?" test.txt

h 括弧符號:[]

  匹配括弧中每一個字元,並且匹配的關系是或者的關系

  需求: 找出文件中oldboy 和 oldbey兩個單詞信息

      grep "oldb[oe]y" test.txt

      企業應用: 找尋文件中字母 數字信息

      grep "[0-9a-zA-Z]" test.txt

i 尖號和中括弧組合使用 : [^]

  對中括弧裡面匹配的字元信息進行排除

  grep  "[^0-9a-zA-Z]" test.txt  --- 將字母數字都排除,只留下符號信息

  尖號和中括弧組合使用 : ^[]

  以中括弧裡面匹配的字元作為一行開頭的字元

      grep "^[zx]" test.txt

正則符號注意事項

按照每行信息進行過濾處理

注意正則表達符號禁止中文

附上顏色信息進行正則過濾 --color=auto/--color

基礎正則符號可以被三劍客命令直接識別 grep sed awk

擴展正則符號不可以被三劍客命令中老二和老三直接識別

sed命令想識別正則符號: sed -r

grep命令想識別正則符號: egrep / grep -E

    a 加號符號:+

    匹配加號前面一個字元連續出現1次或者多次

b 豎線符號:|

或者關系符號

egrep "oldboy|oldbey" test.txt

c 括弧符號:()

將多個字元信息進行匯總為一個整體

egrep "(oldboy)" test.txt

進行後向引用前向的一個操作(sed)

echo "123456"|sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"

修改配置文件內容

sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config

SELINUX=enforcing

d 括弧符號:{}

指定花擴號前一個字元連續匹配多少次

* 連續匹配 0 次 或 多次

+ 連續匹配 1 次 或 多次

    1) {n,m}  n表示最少連續匹配多少次  m表示最多連續匹配多少次

2) {n}  n表示只連續匹配n次

3) {n,}  n表示至少連續匹配n次,至多沒有限制

4) {,m}  m表示至多連續匹配n次,至少0次

e 問號符號:?

  表示匹配問號前面一個字元出現0次或者1次

6. Linux 終端 如何換行 \n

echo -e 'zero\nzo\nzoo'
-e 若字元串中出現以下字元,則特別加以處理,而不會將它當成一般
文字輸出:
\a 發出警告聲;
\b 刪除前一個字元;
\c 最後不加上換行符號;
\f 換行但游標仍舊停留在原來的位置;
\n 換行且游標移至行首;
\r 游標移至行首,但不換行;
\t 插入tab;
\v 與\f相同;
\\ 插入\字元;
\nnn 插入nnn(八進制)所代表的ASCII字元;

7. Linux下的vi換行符是什麼,\n

可以用filetype設定,如dos(\r\n)、unix(\n)等
:set filetype默認是\n,但如果打開的文件全用\r\n,也能識別。

8. Linux系統文本文件的內容後面是不是都有一個換行符 \n

不一定,最後應該是EOF

9. linux下printf中\n的重要作用

linux的命令行默認採用行緩沖模式,換行符\n起到刷新輸出緩沖區的作用。

10. linux特殊符號大全

tab:文本分隔符,相當於四個空格,在命令行界面可以用來自動補齊命令與目錄。
ESC:esc+. ,上一條命令的選項參數,vim恢復到命令模式。
~:家目錄
`:反引號,編程中調用shell命令
!:調用前面的命令,!!調用上一條,!23調用前面低23條。
@:at符,後面接IP地址。
#:Linux文件中注釋行,表示不起作用。
$:文件行結尾標識符,變數標識符。
%:格式化文本。
^:文件行首標識符
&:任務放到後台
*:通配符,代表一個字元或者很多個字元。
\:用來轉義,\t表示製表符,\n表示換行符。
<:數據流的流入方向,表示輸入,將數據傳入給左側軟體。
|:管道,改變數據流的方向,將數據傳入給另外的軟體。
>:數據流的流出方向,表示輸出,將屏幕輸出的內容寫入一個文件。
2>:數據流的流出的第二個方向,表示錯誤輸出,報錯信息會寫入到這個文件中。
>>:表示追加寫入
/:根目錄,目錄分隔符
『』:雙引號,支持轉義
『:單引號,不支持轉義
():shell編程中使用,命令行用的不多
[]:索引
{}:代碼塊
::vim或者less命令中,表示可以輸入命令
;:分割不同命令
-:短選項標識符-h
--:長選項標識符--help

閱讀全文

與linuxn換行符相關的資料

熱點內容
pdf裡面怎麼去水印 瀏覽:845
appleid賬號加密碼 瀏覽:220
蘋果如何下載微倉app 瀏覽:916
迅雷解壓進度為0 瀏覽:859
解壓解惑近義詞 瀏覽:316
壓縮比不一樣燃燒室不一樣 瀏覽:101
androidbutton左對齊 瀏覽:172
怎麼找到學校的伺服器 瀏覽:368
android狀態欄高度是多少 瀏覽:987
linuxcliphp 瀏覽:515
蘿卜源碼如何關閉用戶注冊驗證 瀏覽:756
蘋果手機頭條app怎麼沒有tv 瀏覽:563
電腦qq文件夾怎麼發不出去 瀏覽:614
解壓小游戲測試鑽石劍的硬度 瀏覽:962
java結束函數 瀏覽:622
打開遠程桌面的命令 瀏覽:836
樹莓派如何搭建mqtt伺服器 瀏覽:588
怎麼加密w8文件 瀏覽:609
linuxprogram 瀏覽:708
php介面編程思想 瀏覽:92