版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cut命令
# 以","为分隔符,输出one.csv文件的第1-2个,第4-5个,第7到最后所有的字段
cut -d , -f -2,4-5,7- one.csv
# 以","为分隔符,输出one.csv除前3个外的所有字段,以":"作为输出分隔符
cut --delimiter , --fields 3,2,1 --complement --out-delimiter : one.csv
使用awk命令实现cut
# 获取one.csv的字段个数
nf=`head -n1 one.csv | awk -F, '{print NF}'`
# 字段数量较多时使用
for((i=1;i<${nf};i++));do
if(($i > 3 && $i < 6)); then
fields+="\$$i,"
elfi(($i == 6)); then
fields+="\$$i,"
done
# 输出第4-6行
awk -F, "{print ${fields}}" one.csv
# 可以调整字段顺序,并重复输出,更灵活
awk -F, "{print $2,$2$1,$0,${NF-1},${NF-3}}" -OFS=":" one.csv
split命令
# -n或者--number指定文件分割的数量,文件大小相同,有可能会在行中断开
split -n 5 one.csv
ls -lh xa*
# xaa xab xac ...
# 只打印第4个文件,且输出不在行中间截断
split -n l/4/5 one.csv
# 10K = 10*1024 bytes, M,G,T同理
# 10KB = 10*1000 bytes, MB,GB,TB同理
# 按每一个文件10K分割,可能断行
split -b 10K one.csv
# 按每一个文件10KB分割,不断行
split -C 10KB one.csv
# -a指定文件编号长度为3,-d指定文件编号为数字,文件后缀为csdn.csv,前缀为my
# -l指定每8行分割输出一个文件
split -a 3 --additional-suffix=csdn.csv -d -l 8 one.csv my
# my000csdn.csv my001csdn.csv ...