linux文件编辑,cut、split命令

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u014711094/article/details/88043646

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 ...

猜你喜欢

转载自blog.csdn.net/u014711094/article/details/88043646
今日推荐