# seq
seq:单词sequence序列的缩写,功能是输出序列化的一串整数。
# 输出 1-5,分隔符是换行符
seq 5
# 输出 2-8,分隔符是空格
seq -s ' ' 2 8
# 输出 1-10 的奇数
seq -s ' ' 1 2 10
# 使用-f来指定输出格式,%后面表示的是数字的位数,默认为%g,示例中的%2g表示两位输出,不足两位默认补空格
seq -f "%2g" -s ' ' 8 12
seq -f "%04g" -s ' ' 8 12
# 前面加自定义字符串
seq -f "sss%04g" -s ' ' 8 12
# 保留小数点后3位
seq -f "%.3f" 9 11
# -w 输出数字等宽
seq -w 1 2 100
# paste 从在命令行上指定的文件中读取输入。用于合并文件的列。
# paste 指令会把每个文件以列对列的方式,一列列地加以合并。
# 将两个文件按照行合并,同时指定间隔符
paste -d , test.log test1.log
# 将两个文件串行合并
paste -s test.log test1.log
paste -d , <(seq 6) <(seq 6) <(seq 6)
paste -s <(seq 6) <(seq 6) <(seq 6)
#xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。
xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。
xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。
xargs 默认的命令是 echo,这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。
xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。
seq 10 | xargs -n 4
# 多行转换为一行
sed ':a; N;s/\n/ /; ta' a.txt ## 利用sed的跳转功能
time 统计命令运行的时间
# tr
# tr 把换行符替换为空格,利用sed命令在末尾添加换行符
cat keys.txt | tr "\r\n" " " | sed 's/$/\n/'
# sed全称是:Stream EDitor
# sed是一种流编辑器,它一次处理一行内容。
sed 's/,$/ /' 将最后一个 ,(逗号)替换为空
# awk
awk BEGIN{RS=EOF}'{gsub("\r\n"," ");print}' keys.txt
日志统计bash
#!/bin/bash
# 系统日志统计, 统计不同用户的调用次数
# $1参数代表统计结果文件名字,脚本运行的第一个参数
# 读取用户keys,整合成一行,空格分隔
userKeys=`cat keys.txt | tr '\r\n' ' '`
echo '所有用户的key:' $userKeys > $1
# 读取日志文件名字
logsName=`ls *.log`
echo $logsName
# 循环统计每一个用户的调用次数
for userKey in $userKeys
do
echo $userKey "调用次数是:" | tr '\r\n' ':' >> $1
grep $userKey $logsName | wc -l >> $1
done