#前言

一些使用 zsh 的技巧,方便快速查询。前半部分以场景为主题,组合各命令完成目标。后半部分以命令划分,记录不同命令的常用参数。

#场景

#组合数据

从不同数据源中取得的数据需要根据关联 id 进行合并,并产生最终 sql

假设样例数据

1
2
3
4
b,2
c,3
a,1
d,4

1
2
3
4
#,c
$,d
!,a
@,b

需要组合成update table_a set f1="1", f2="!" where id = "a" limit 1;这样的 sql。

#排序

通过基础工具的组合几乎都需要有序(除非通过 awk 等类似脚本的工具),所以需要对原始内容进行排序

1
2
3
4
5
6
7
8
9
10
11
└➜ cat testa.txt | sort -t, -k1,1
a,1
b,2
c,3
d,4

└➜ cat testb.txt | sort -t, -k2,2
!,a
@,b
#,c
$,d

#组合

join命令可以将数据按给定列进行组合,不同的组织方式得到不同的顺序:

1
2
3
4
5
6
7
8
9
10
└➜ join -t, -1 1 -2 2 tas.txt tbs.txt
a,1,!
b,2,@
c,3,#
d,4,$
└➜ join -t, -1 2 -2 1 tbs.txt tas.txt
a,!,1
b,@,2
c,#,3
d,$,4

join只会合并两边都存在的行:

1
2
3
4
5
6
7
8
9
└➜ cat tas.txt | head -n 3 > tas2.txt
└➜ join -t, -1 1 -2 2 tas2.txt tbs.txt
a,1,!
b,2,@
c,3,#
└➜ cat tbs.txt | tail -n 3 > tbs2.txt
└➜ join -t, -1 1 -2 2 tas2.txt tbs2.txt
b,2,@
c,3,#

paste会按照行进行合并,在某些组合场景下也有用处:

1
2
3
4
5
└➜ paste -d, tas.txt tbs.txt
a,1,!,a
b,2,@,b
c,3,#,c
d,4,$,d

#命令