1. 程式人生 > 其它 >linux 系統中awk 字串處理函式

linux 系統中awk 字串處理函式

1、sub、gsub

root@DESKTOP-1N42TVH:/home/test# ls
test.txt
root@DESKTOP-1N42TVH:/home/test# cat test.txt  ## 測試資料
a 3 3
s 1 j
z c m
q e i
3 4 k
h f 3
root@DESKTOP-1N42TVH:/home/test# awk '{sub(3,"xxx"); print $0}' test.txt    ## sub替換第一個匹配的字元
a xxx 3
s 1 j
z c m
q e i
xxx 4 k
h f xxx
root@DESKTOP-1N42TVH:/home/test# awk '
{gsub(3,"xxx"); print $0}' test.txt ## gsub替換所有匹配的字元 a xxx xxx s 1 j z c m q e i xxx 4 k h f xxx

2、length

root@DESKTOP-1N42TVH:/home/test# cat test.txt
a 3 3 a 3 3
s 1 j s 1 j
z c sm z c m
q e i388 q e i
3 4 k33 3 4 k
h f 3 h f 3
root@DESKTOP-1N42TVH:/home/test# awk '{print length($0)}' test.txt
11
11
12 14 13 11 root@DESKTOP-1N42TVH:/home/test# awk '{print length($3)}' test.txt 1 1 2 4 3 1 root@DESKTOP-1N42TVH:/home/test# awk 'length($3) == 3' test.txt 3 4 k33 3 4 k

3、index / match

root@DESKTOP-1N42TVH:/home/test# ls
test.txt
root@DESKTOP-1N42TVH:/home/test# cat test.txt
a 3 3 a 3 3
s 1 j s 1 j
z c sm z c m
q e i388 q e i
3 4 k33 3 4 k h f 3 h f 3 root@DESKTOP-1N42TVH:/home/test# awk '{print match($0, "j")}' test.txt 0 5 0 0 0 0 root@DESKTOP-1N42TVH:/home/test# awk '{print index($0, "j")}' test.txt 0 5 0 0 0 0

4、substr

root@DESKTOP-1N42TVH:/home/test# ls
test.txt
root@DESKTOP-1N42TVH:/home/test# cat test.txt
a 3 3 a 3 3
s 1 j s 1 j
z c sm z c m
q e i388 q e i
3 4 k33 3 4 k
h f 3 h f 3
root@DESKTOP-1N42TVH:/home/test# awk '{print substr($3, 1, 3)}' test.txt
3
j
sm
i38
k33
3
root@DESKTOP-1N42TVH:/home/test# awk '{print substr($3, 1, 2)}' test.txt
3
j
sm
i3
k3
3
root@DESKTOP-1N42TVH:/home/test# awk '{print substr($3, 2)}' test.txt


m
388
33

5、split

root@DESKTOP-1N42TVH:/home/test# ls
test.txt
root@DESKTOP-1N42TVH:/home/test# cat test.txt
test3_1_clean.fq.gz test3_2_clean.fq.gz
test4_1_clean.fq.gz test4_2_clean.fq.gz
test5_1_clean.fq.gz test5_2_clean.fq.gz
root@DESKTOP-1N42TVH:/home/test# awk '{split($1, x, "_"); print x[1], x[2], $0}' test.txt
test3 1 test3_1_clean.fq.gz test3_2_clean.fq.gz
test4 1 test4_1_clean.fq.gz test4_2_clean.fq.gz
test5 1 test5_1_clean.fq.gz test5_2_clean.fq.gz