sed 刪除換行符
創(chuàng)新互聯(lián)建站主打移動(dòng)網(wǎng)站、網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站改版、網(wǎng)絡(luò)推廣、網(wǎng)站維護(hù)、域名注冊(cè)、等互聯(lián)網(wǎng)信息服務(wù),為各行業(yè)提供服務(wù)。在技術(shù)實(shí)力的保障下,我們?yōu)榭蛻舫兄Z穩(wěn)定,放心的服務(wù),根據(jù)網(wǎng)站的內(nèi)容與功能再?zèng)Q定采用什么樣的設(shè)計(jì)。最后,要實(shí)現(xiàn)符合網(wǎng)站需求的內(nèi)容、功能與設(shè)計(jì),我們還會(huì)規(guī)劃穩(wěn)定安全的技術(shù)方案做保障。
sed ':label;N;s/\n/:/;b label' filename
sed ':label;N;s/\n/:/;t label' filename
shell中echo輸出不換行。
linux的echo命令, 在shell編程中極為常用, 在終端下打印變量value的時(shí)候也是常常用到的, 因此有必要了解下echo的用法echo命令的功能是在顯示器上顯示一段文字,一般起到一個(gè)提示的作用。該命令的一般格式為: echo-n 字符串其中選項(xiàng)n表示輸出文字后不換行。
去掉文件中的換行符
(1)tr命令的操作是針對(duì)文件的操作,它把整個(gè)文本當(dāng)做操作的對(duì)象,所以可以直接去除文件中的換行符
tr '\n' ' ' file
(2)sed的操作對(duì)象是行.而作為行分割符號(hào)的回車符,本身是不屬于行的.所以sed中必須加上N命令,把下一行的內(nèi)容添加到當(dāng)前的pattern space中,這樣實(shí)際上是把相鄰的2行合并了.下一次仍然是先n,再p,再N,開始新的輪回:
cat file | sed 'N;s/\n/ /'
所以上面的語(yǔ)句是不能把文件內(nèi)容合并為一行的,到底該怎么寫,我暫時(shí)沒有想到,呵呵
(3)直接用awk
awk '{printf("%s ",$0)}' file
(4)當(dāng)然,用echo也是可以的:
while read line;do echo -n "$line"; done awk_help.txt, 這樣,可以把a(bǔ)wk_help.txt的內(nèi)容合并為一行
sed -e "s#\[/r][/r][/n]#\[/r][/n]#g" file
在Linux系統(tǒng)里常用于文本查看、操作、統(tǒng)計(jì)的命令:
通過(guò)多敲鍵盤,形成手感 肌肉記憶 ,熟練掌握這些命令,在以后生信分析中游刃有余。以下是每個(gè)命令的詳細(xì)的介紹(主要是跟著 生信技能樹小郭老師 學(xué)習(xí)做的筆記)
接下來(lái)通過(guò)示例把10個(gè)命令的常用參數(shù)和用法展示出來(lái):
參數(shù)的用法介紹:
注意事項(xiàng):
用 cat 命令可以 查看文本 ,也可以 編輯文本 ,編輯文本要加 符號(hào),退出時(shí),另起一行,按 control C 退出
zcat可以查看壓縮的文本文件,tac逆向查看
結(jié)合 管道符| 使用
head / tail -n :查看文件的前 / 后 n 行,默認(rèn) 10 行 (在R語(yǔ)言里head和tail默認(rèn)是前6行)。
less命令用得最多 ,more命令用得比較少
3.1 less命令
less [參數(shù)] 文件名
less命令重要的補(bǔ)充用法1 :
需要注意 退出 :只要使用less命令, 按q鍵
less命令重要的補(bǔ)充用法2 :
參數(shù)用法:
less命令 不加參數(shù) 查看文件:
less命令加 -N參數(shù) 查看文件:顯示行號(hào)
less命令加 -S參數(shù) 查看文件:?jiǎn)涡酗@示,非常規(guī)整
對(duì)比:less和cat命令顯示文本行號(hào)的用法:less -N,cat -n
3.2 more命令
**more ** 逐頁(yè)查看,按空格翻頁(yè),按回車換行 ,more命令一般很少用,熟練掌握l(shuí)ess命令就好
查看壓縮文件
wc 統(tǒng)計(jì)字符是也把換行符統(tǒng)計(jì)進(jìn)去,但是別的命令不一定會(huì)把換行符算進(jìn)去,。
常見參數(shù):
切記:用less命令,按q退出
cut命令是按關(guān)鍵詞來(lái)切的
常見參數(shù):
排列前:
排列后:
解釋:1和0比,1大;7和0比,7大…在sort字典排序里,100816比1737小,所以100816排在前面。
命令行查看一個(gè)表格結(jié)構(gòu)時(shí),因?yàn)橹票矸麑?duì)齊的原因,出現(xiàn)一個(gè)錯(cuò)位的現(xiàn)象。還有 字典排序 可能和我們平時(shí)的認(rèn)知不一樣,所以 加上-n參數(shù) , 讓數(shù)值有數(shù)學(xué)意義上的大小來(lái)排序 。
uniq命令去重,只有兩行出現(xiàn)重復(fù),而且是相鄰的兩行,如果不相鄰,即使出現(xiàn)兩行一模一樣,不會(huì)去重。
uniq命令通常和sort命令搭配使用
換其它文件試試
總之,uniq命令使用時(shí)經(jīng)常和sort一起
常見參數(shù):
常見用法1:
paste file1 file2
-s :按行合并 演示
常見用法2 : paste - -
常見參數(shù):
要養(yǎng)成一個(gè)好習(xí)慣,原始數(shù)據(jù)不要輕易修改,修改的東西另外保存,文本保存用 (重定向)或是 (追加)
1. 用 less 查看 example.gtf ,然后管道符傳遞給 wc
2. 截取 example.gtf 第 9 列的內(nèi)容
3. 在第2步的基礎(chǔ)上截取分號(hào)分割的第1列
4. 在第3步的基礎(chǔ)上排序、去重復(fù)并統(tǒng)計(jì)
5. 在第4步的基礎(chǔ)上,將空格替換成制表符
補(bǔ)充小知識(shí) :
清屏 :control L
查看歷史(輸入過(guò)的)命令 :history
指令代碼:set nowrap
詳解:我們?cè)趌inux服務(wù)起上多用vim查看文件,常有這行的情況,我們的解決辦法有兩個(gè),即,
在編輯模式下 :set nowrap
修改配置文件~/.vimrc set nowrap
拓展:
syntax on " 自動(dòng)語(yǔ)法高亮
"set number " 顯示行號(hào)
"set cursorline " 突出顯示當(dāng)前行
set shiftwidth=4 " 設(shè)定 和 命令移動(dòng)時(shí)的寬度為 4
set softtabstop=4 " 使得按退格鍵時(shí)可以一次刪掉 4 個(gè)空格
set tabstop=4 " 設(shè)定 tab 長(zhǎng)度為 4
在windows上編寫的shell、python等腳本在Linux上無(wú)法正常的執(zhí)行,會(huì)有 ^M 相關(guān)提示,
原因 :
在Linux上使用vim打開文件,顯示很多的 ^M 字符,主要是因?yàn)樵赪indows下?lián)Q行使用CRLF兩個(gè)字符來(lái)表示,其中CR為回車(ASCII=0x0D),LF為換行(ASCII=0x0A),而在Linux下使用LF一個(gè)字符來(lái)表示。在Linux下使用vim來(lái)查看一些Windows下創(chuàng)建的腳本文件時(shí),會(huì)發(fā)現(xiàn)在每一行尾部有^M字符,其實(shí)它是顯示CR回車字符
Unix體系里,每行結(jié)尾只有“換行”,即“\n”;
Windows體系里面,每行結(jié)尾是“換行回 車”,即“\n\r”。
一個(gè)直接結(jié)果是,Unix體系下的文件在Windows里打開的話,所有文字會(huì)變成一行;
而Windows里的文件在Unix下打開的話,在每行的結(jié)尾可能會(huì)多出一個(gè)^M符號(hào)。
如果正常編輯文件中看不見^M,可以用”cat -A test.file”號(hào)令查看。
使用vim方式處理
在vim命令模式下輸入%s/^M$//g
回車即會(huì)自動(dòng)刪除該文件中的所有 ^M 字符。
% 指匹配整個(gè)文件,s 是置換的意思,^M 注意要用 Ctrl + V Ctrl + M 來(lái)輸入,M 后面的 $ 代表匹配行尾的內(nèi)容,最后的 g 則表示每行中匹配到的內(nèi)容都要置換。
理解了命令的含義,就好變通使用了,比如說(shuō),要將某個(gè)文件中的 Vim 全部替換成 VIM,則可以使用這樣的命令::%s/Vim/VIM/g。
方法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’,那么當(dāng)然通過(guò)刪除‘\r’ ,也可以實(shí)現(xiàn):
tr -d ‘\r’
方法5:使用Linux上的工具
tofrodos
(1)安裝tofrodos
sudo apt-get install tofrodos
實(shí)際上它安裝了兩個(gè)工具:todos(相當(dāng)于unix2dos),和fromdos(相當(dāng)于dos2unix)
安裝完即可,現(xiàn)在你已經(jīng)可以進(jìn)行文本格式的轉(zhuǎn)換啦。
比如: todos Hello.txt (即unix2dos Hello.txt)
fromdos Hello.txt (即dos2unix Hello.txt)
PS :
編輯器IDE設(shè)置文件回車格式為unix格式