linux awk命令各种使用实例

linux awk命令各种使用实例

  1. docker ps -a | grep redash |awk ‘{print $1}’|xargs docker rm -f

  2. awk ‘$1>1’ 输出第一列大于1的

  3. system使用外部命令 输出pid的启动命令

echo -e "pid\tcmd";ls /proc/[0-9]*/cmdline|awk -F / '{printf $3"\t"}''{system("cat "$0)}''{print ""}' 
  1. 所有文件的author
ls |awk '{printf $0","}''{system("git log -1 --pretty=format:\"%an\" " $0 " | xargs")}'

echo "dataset,table,user" > a.csv; find -type f |awk -F "/" '{printf $3","$4","}''{system("git log -1 --pretty=format:\"%an\" " $0 " | xargs")}'>> a.csv

  1. 计算列数,不足列数时候退出
awk -F '\t' 'NF!=42 {print NR,NF,$0;exit}'
  1. 打印倒数第二列
echo a/b/c | awk -F '/' '{print $(NF-1)}'
  1. 每列加引号
awk -F'\t' '{ \
   	for (i=1;i<=NF;++i){ \
   		$i="\"" $i "\","
   	}
   		print $0
   }' qw.txt
  1. 格式化输出tsv
cat yh_res | awk -F'\t' '{for(i=1;i<=NF;i++){sub(/\s+/,"",$i);$i=substr($i,1,20) "|||" }} 1' | column  -t -s "|||"
  1. 去重
  2. 只输出重复的
  3. 统计次数
cat a.txt
59314
46791
59992
60311
60134
59992
60311
97343

# 去重 不在{}里 表示过滤条件 a表示一个字典
cat a.txt | awk '!a[$1]++ {print $0}'  # {print $0}可省略

# 只输出重复的
cat a.txt | awk 'a[$1]++ {print $0}'

# 原样输出
cat a.txt | awk '++a[$1] {print $0}'

# 统计次数  END表示全部行数处理完之后再执行
cat a.txt | awk '{a[$1]++} END{for(i in a) print i,a[i]}'

  1. 计算csv第二列为空的数量
cat sample_old.csv | tqdm | awk -F, ' {if(length($2)==0) cnt+=1 } END {print cnt}'
  1. 取csv第三列最大最小值
head sample.csv | tqdm |sed 1d| awk -F, ' BEGIN{max=0;min=99999999} {if($3>max) max=$3}{if($3<min) min=$3 } END {print "max="max,"min="min}'

  1. 输入最后一列大于10的且只输出5行
cat a.txt | awk -F, '$NF>10 && cnt<5 { print $0;cnt+=1}'

# 满足时退出
cat a.txt | awk -F, '$NF>10 { print $0;cnt+=1} cnt>=5 {exit}'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年空空梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值