Linux常用基本命令:三剑客命令之-awk输入输出分隔符
输入分隔符,英文原文为field separator,此处简称为FS,默认是空白字符(即空格),awk默认以空白字符为分隔符对每一行进行分割。
输出分割符,英文原文为output field separator,此处简称为OFS,awk将每行分割后,输出在屏幕上的时候,awk默认的输出分割符也是空格。
1,用F选项,指定输入分隔符
ghostwu@dev:~/linux/awk$ cat ghostwu.txt ghostwu--man zhangsan--woman lisi--woman ghostwu@dev:~/linux/awk$ awk '{print $1, $2, $3}' ghostwu.txt ghostwu--man zhangsan--woman lisi--woman
如果不指定分隔符,默认用空格,是不能切割ghostwu-20-man这一行的每一列的
ghostwu@dev:~/linux/awk$ awk -F- '{print $1, $2, $3}' ghostwu.txt ghostwu man zhangsan woman lisi woman
F指定'-'为分隔符,同理,先利用sed把ghostwu.txt分割符变成#,然后再用awk的F选项指定分隔符#来进行切割
ghostwu@dev:~/linux/awk$ sed -i 's/\-/#/g' ghostwu.txt ghostwu@dev:~/linux/awk$ cat ghostwu.txt ghostwu##man zhangsan##woman lisi##woman
ghostwu@dev:~/linux/awk$ awk -F# '{print $1, $2, $3}' ghostwu.txt ghostwu man zhangsan woman lisi woman
也可以使用内置变量FS 配合-v选项指定输入分隔符
ghostwu@dev:~/linux/awk$ awk -v FS='#' '{print $1, $2, $3}' ghostwu.txt ghostwu man zhangsan woman lisi woman
而-F,就是options的一种,用于指定输入分隔符。
-v也是options的一种,用于设置变量的值。
2,使用OFS指定输出分隔符,OFS是内置变量,配合v选项一起使用
ghostwu@dev:~/linux/awk$ cat ghostwu.txt ghostwu##man zhangsan##woman lisi##woman ghostwu@dev:~/linux/awk$ awk -v FS='#' '{print $1, $2, $3}' ghostwu.txt ghostwu man zhangsan woman lisi woman ghostwu@dev:~/linux/awk$ awk -v FS='#' -v OFS='--->' '{print $1, $2, $3}' ghostwu.txt ghostwu--->--->man zhangsan--->--->woman lisi--->--->woman
注意的在输出列的时候,列与列之间要用逗号,如果不用逗号,就变成连接在一起输出
ghostwu@dev:~/linux/awk$ awk -v FS='#' -v OFS='--->' '{print $1 $2 $3}' ghostwu.txt ghostwu20man zhangsan22woman lisi23woman ghostwu@dev:~/linux/awk$
相关推荐
baobaozai 2020-04-29
fenxinzi 2020-03-01
zhiliang 2020-01-31
PHP学习笔记 2020-01-06
PHP学习笔记 2019-12-31
jiazhou 2019-11-06
hyfcomeon 2017-02-23
Noneyes 2020-11-10
此处省略三千字 2020-07-20
银角大王 2020-06-25
阳历六月 2020-06-14
lishaokang 2020-06-14
小惠 2020-06-05
Norsaa 2020-05-07
fsfsdfsdw 2020-04-21
taisenki 2020-04-08
hyfcomeon 2013-06-14