1.cut -bn <file>
以字節(jié)(byte)為分割單位
-b list 打印出list中指定位置字節(jié)试溯,制表符和空格符均為一個字節(jié);
-n 對于多字節(jié)字符不進行分割憨闰,主要針對漢字(一個漢字三個字節(jié))等多字節(jié)字符;
2.cut -c <file>
以字符(character)為分割單位
-c list 打印出list中指定位置字符需五,對于單字節(jié)字符同-b選項鹉动,對于多字節(jié)字符有區(qū)別;
3.cut -df <file>
以域(fileld)為分割單位
-f list 打印出list中指定位置域宏邮,默認以制表符作為分隔符;
-d byte 指定分隔符;
$cat fa.txt
sample A B C D E F G H padj
ID1 1 2 3 4 5 6 7 8 0.2
ID2 1 2 3 4 5 6 7 8 0.03
ID3 1 2 3 4 5 6 7 8 0.02
$cut -b 2 fa.txt
a
D
D
D
$cut -c 1 fa.txt
s
I
I
I
$cut -b 1-5 fa.txt
sampl
ID1 1
ID2 1
ID3 1
替換第一個空格
sed 's/ /_/' mat
替換所有空格
sed 's/ /_/g' mat
將空格替換為空格
echo seq 1 10
| sed 's/ /,/g'
指定第二行训裆,將數(shù)字替換為空格
sed '2,$ s/_[0-9]//g' mat
替換第一個空格
sed 's/ /_/1' mat
替換第二個空格
sed 's/ /_/2' mat
替換第二個及以后的空格
sed 's/ /_/2g' mat
打印序列,打印行號
$seq 20 25 |sed =
1
20
2
21
3
22
4
23
5
24
6
25
同時緩沖兩行蜀铲,但只對第一行行首操作
$seq 20 25 |sed =|sed 'N;s/^/>/'
>1
20
>2
21
>3
22
>4
23
>5
24
>6
25
將換行符替換為指標符號
$seq 20 25 |sed =|sed 'N;s/\n/\t/'
1 20
2 21
3 22
4 23
5 24
指定第二列按數(shù)字排序
sort -e -k2,2n
插入標題行
$seq 20 25 |sed =|sed 'N;s/\n/\t/'|sed '1 i ID\t\mum'
ID mum
1 20
2 21
3 22
4 23
5 24
6 25
打印第二行
sed -n '2p' file.txt
打印第二行边琉,第五行,至最后一行
sed -n '2~4p'
打印第二行记劝,到第四行
sed -n '2,4p'
提取符合特定模式的行
$sed -n '/>/p' input.fa
>ENSMUST00000000001
>ENSMUST00000000003
>ENSMUST00000000010
去除文件中的空行
空行就是只有行首和行尾的行
sed '/^$/d' file.txt
原位刪除整行
sed -i '/^$/d' mat
-i 參數(shù)的使用
原位刪除的意思是变姨,屏幕不輸出
刪除指定范圍行
$sed '1,2d' fa.txt
ID3 1 2 3 4 5 6 7 8
記憶匹配
()啟動記憶匹配;\1為第一個匹配項厌丑,\2為第二個匹配項定欧;匹配項的計數(shù)根據(jù)左括號出現(xiàn)的位置來定,第一個(包括起來的為\1怒竿。
$echo "hah ehbio hah"
hah ehbio hah
$echo "hah ehbio hah"|sed 's/\(.*\)/\t\1\t\1\t/'
hah ehbio hah hah ehbio hah
奇數(shù)偶數(shù)行合并
$echo -e "odd\neven\nodd\neven"
odd
even
odd
even
$echo -e "odd\neven\nodd\neven"|sed 'N;s/\n/\t/'
odd even
odd even
取出偶數(shù)行砍鸠,比較簡單
注意 n (小寫)撇掉了奇數(shù)行
$echo -e "odd\neven\nodd\neven"|sed -n 'n;p'
even
even
取出奇數(shù)行
先都讀進去,然后替換偶數(shù)行為空值耕驰,再輸出
$echo -e "odd\neven\nodd\neven"|sed -n 'N;s/\n.*//p'
odd
odd
Windows/Linux換行符困境
Windows下的換行符是\r\n, Linux下?lián)Q行符是\n, MAC下?lián)Q行符是\r爷辱。所以Windows下的文件拷貝到Linux后,常會出現(xiàn)行尾多一個^M符號的情況,從而引起匹配或其它解析問題饭弓。
^M的輸是 ctrl+v+M ctrl+v;ctrl+m双饥,不是簡單的輸入^,再輸入M。
ct@ehbio:~/SXBD$ cat -A windows.txt
ID^M$
A^M$
B^M$
C^M$
ct@ehbio:~/SXBD$ sed 's/^M//' windows.txt | cat -A
ID$
A$
B$
C$