1 less
space bar翻頁(yè), g第一行
G最后一行锌妻, j下, k上, /<pattern>往下搜索模式, ?<pattern>往上搜索模式, n前一個(gè)匹配字符, N后一個(gè)匹配字符撇贺。
-S 行過(guò)長(zhǎng)時(shí)間將超出部分舍棄
-N 顯示每行的行號(hào)
more 命令, cat vim 命令也可以查看文本
2 grep
比如我們要去除 空白行和行首為 #的行冰抢, 會(huì)這樣用:
grep -v '^$' regular_express.txt | grep -v '^#'
-v選項(xiàng)排除匹配到的松嘶, -w進(jìn)行完全匹配
-B指定輸出包括匹配到的前多少行,比如 -B1就是前一行挎扰; -A指定輸出包括匹配到的后多少行翠订,比如 -A2就是包括了后兩行巢音。 -C指定輸出包括匹配到的前后多少行。 grep支持基本正則表達(dá)式尽超, -E指定支持?jǐn)U展表達(dá)式官撼,或者用 egrep命令。 -c選項(xiàng)對(duì)匹配的行計(jì)數(shù)似谁; -o選項(xiàng)只抽離輸出匹配的部分
3 cut
grep -v "^>" kup.fasta | head -n 1 |cut -f 1-3
cut -f 看指定列
-d選項(xiàng)可以指定分隔符
使用 column命令來(lái)格式化輸出
grep -v "^>" kup.fasta | head -n 10 |cut -f 1-3|column -t
column -s "," -t #可以改變分隔符
grep -v "^>" kup.fasta | head -n 10 |cut -f 1-3| sed 's/"http://g' | sort | uniq | head -n 10 #去除冗余傲绣,只要唯一
#一般uniq和head要連起來(lái)使用。先把一樣的放在一起巩踏,再進(jìn)行刪除秃诵。
uniq -c 選項(xiàng)計(jì)數(shù)
uniq -d 只輸出重復(fù)行
4 join
合并兩個(gè)文件,需要有共同的一列蛀缝,所以我們sort之后join。
join -1 <file_1_field> -2 <file_2_field> <file_1> <file_2>
join -1 1 -2 1 example_sorted.bed example_length.txt > example_with_length.txt
如果文件內(nèi)容不一致目代,我們可以-a選項(xiàng)指定哪一個(gè)文件可以不遵循配對(duì)屈梁,不然不一致的行就會(huì)被刪除。
5 其他
ls -lh以易讀形式查看文件大小
wc -l 看行數(shù)
head tail -n選項(xiàng)可以指定行數(shù)
awk -F " " '{print NF;exit}' filename 輸出文檔列數(shù)榛了,只輸出第一行的在讶。
tail -n +2 kup.fasta | head -n 1 刪除前兩行,并check一下
grep -v "^>" kup.fasta | head -n 2 去除含有>的行霜大,并看第二行
file filename 查看文件類型
6 awk
awk '{print $0}' example.bed
#表示所有列
wsx@wsx-ubuntu:/tmp$ awk '$3 - $2 >18' example.bed
chr1 9 28
wsx@wsx-ubuntu:/tmp$ awk '$1 ~/chr1/ && $3 - $2 > 10' example.bed
chr1 26 39
chr1 32 47
chr1 9 28
# 這里 ~ 符號(hào)用來(lái)匹配正則表達(dá)式
#還有 awk存在一些變量构哺,像 NR表示行號(hào), OFS表示輸出分隔符等战坤。
wsx@wsx-ubuntu:/tmp$ awk 'NR >= 3 && NR <= 5' example.bed
chr3 11 28
chr1 40 49
chr3 16 27
Linux awk語(yǔ)句示例
7 sed
內(nèi)容太多了曙强。
生新技能樹文件
# 刪除空行
sed '/^$/d'
#每行后增加空行
sed G
# 在每5行后增加一空白行
gsed '0~5G'
# 在匹配式樣“regex”的行之后插入一空行
sed '/regex/G'
# 在匹配式樣“regex”的行之前和之后各插入一空行
sed '/regex/{x;p;x;G;}'
# 過(guò)濾所有的html標(biāo)簽
sed 's/<[^>]*>//g ; /^$/d' html.txt
# 代替 cat 功能
sed ''
# 代替 head 功能
sed '10 q'
# Dos2unix
sed 's/^M$//'
# Unix2dos
sed 's/$/\r/'
# nl(添加行號(hào))
# sed行號(hào)會(huì)獨(dú)占一行
sed = input.file | sed 'N;s/\n/\t/'
# tee
sed ‐n 'p; w new.txt'
# 代替 grep 功能
sed ‐n '/pattern/p'
# grep -v
sed ‐n '/pattern/p!'
# 計(jì)算行數(shù)
sed -n '$='
# 多個(gè)內(nèi)容同時(shí)替換
sed 's/a\|b\|c/d/' tmp.txt
# 將每?jī)尚羞B接成一行
sed '$!N;s/\n/ /'
# 如果當(dāng)前行以等號(hào)開頭,將當(dāng)前行并到上一行末尾
# 并以單個(gè)空格代替原來(lái)行頭的“=”
sed -e :a -e '$!N;s/\n=/ /;ta' -e 'P;D'
# 顯示包含“AAA”途茫、“BBB”或“CCC”的行(任意次序)
sed '/AAA/!d; /BBB/!d; /CCC/!d'
7 shell 腳本
ll filename 查看權(quán)限
chmod u+x filename 更改權(quán)限
sh filename
./filename
如果想把文本字符串和命令輸出顯示在同一行中碟嘴,可以用 echo語(yǔ)句的 -n參數(shù)
Linux提供了一個(gè)專門的變量$?`來(lái)保存上個(gè)已執(zhí)行命令的退出狀態(tài)碼