实际思路如下:

alias 别名

alias myssh=’sh filename.sh’

5、再次行使reduce方法,变换数组为二维数组,第一名列单词,第二列为与的相应的只有词之个数;

未完待续…

原稿链接:http://blog.keepmovingxin.com/2016/04/28/Linux-Commond/

1、打开工作日志文件(txt),将各国一行的始末存入一个累组,得到一个抱满字符串的数组;

sort 排序

sort拿文件之各级一样执行作为一个单位,相互比较,比较标准是从首字符向后,依次按ASCII码值进行比,最后以她们仍升序输出。
主要参数:

-u: 去除重复行
-r: sort默认的排序方式是升序,如果想改成降序,用此参数
-o file: 把排序结果输出到文件file,file可以是原文件
-n: 以数值排序
-t: 指定间隔符
-k: 指定域排序,常与-t连用。sort –t ':' –k 2
    在指定域的时候还可细分,比如指定第二个域的第3个字符开始比较,用-k 2.3;
    比如指定第二个域的第3个字符到第二个域的第5个字符进行排序,用-k 2.3,2.5
    比如只指定第二个域的第3个字符进行排序,用-k 2.3,2.3
-b: 忽略每一行前面的所有空白部分,从第一个可见字符开始比较
-f: 忽略大小写进行排序

var fs = require(‘fs’);

var nodejieba = require(“nodejieba”);

nodejieba.load();

fs.readFile(‘work.txt’, ‘utf8’, function (err, data) {

if (err) {

console.log(err);

}

var strs = data.split(‘\n’) // 先将读入的日志按照执行分为一个书组

.reduce(function (last, now) {

nodejieba.cut(now).forEach(function (word) {

last.push(word);

});

return last;

}, []) //
通过reduce将每行的独自词分出,最终汇总成一个蕴含全体单词的数组(有再次)

.reduce(function (last, now) {

var index = last[0].indexOf(now);

if (index === -1) {

last[0].push(now);

last[1].push(1);

} else {

last[1][index] += 1;

}

return last;

}, [[], []]) //
统计单词的个数,数组第一独元素呢寄放单词的屡屡组,第二单要素呢寄放对诺仅词个数之数组

.reduce(function (last, now, index, context) {

var zip = [];

last.forEach(function (word, i) {

zip.push([word, context[1][i]])

});

return zip;

}); //
变换数组,变成二维数组,第一名列单词,第二名列单词对应的个数,没有传递让reduce第二个参数,默认为数组的首先单因素

var stream = fs.createWriteStream(“count.txt”);

stream.once(‘open’, function (fd) {

strs.forEach(function (word) {

stream.write(word[0] + ‘,’ + word[1] + ‘\n’);

})

stream.end();

});

});

seq

seq A B: 用于来于有数届另外一个反复以内的享有整数
主要参数:

-f:指定格式。默认是"%g",表示按宽度为1输出。可以在g的前面加入一些字符,表示不同的含义,如:
   %2g:表示按宽度为2右对齐。
   %02g:表示按宽度为2右对齐,不足的部分用0补足。

可用来组织日志文件称

for i in `seq -f "log.20160407"%02g 5 12`; do echo $i; done
   str%03g:表示按宽度为3右对齐,补足的位数用0补,并在前面加上str子串。
    %-3g:表示按宽度为3左对齐。

3、使用reduce方法漫天集中到一个数组里,此时单词是总体底发双重的多少;

grep 匹配

grep [options] [表达式]

  1. [options]列表:

    -c :只输出匹配行的统计数
    -n :显示匹配配行及行号
    -A2 :列有配合配行及下2行
    -B2 :列有配合配行及地方2行
    -C2 :列有相当配行及左右2行
    -I :不分轻重缓急写(只适用于仅字符)
    -h :查询多文本时莫显示文件称
    -H :查询多文本时显示文件名(默认)
    -l :查询多文本时单输出包含匹配字符的文件称
    -o :每行只输出匹配有
    -s :不显示不存在或者无匹文本的错误信息
    -v :显示不带有匹配文本的所有执行
    -r :递归匹配目录下有所文件以及目录
    -E :扩展grep,增加了额外的正则表达式元字符集
    -e :指定多独门当户对样式,样式间“或”的涉及
    -f
    pattern_file:样式文件pattern_file中逐行存放要配合的体,可匹配多个样式,样式之间是“或”的涉嫌
    –color :为配合配项显示不同颜色

  2. grep –E "pattern1|pattern2" files :显示匹配配 pattern1
    pattern2 的行

  3. grep –e pattern1 –e pattern2 files : 匹配pattern1pattern2
    4)grep pattern1 files | grep pattern2 :显示既匹配 pattern1
    又匹配 pattern2 的行

  4. egrep "t_hero|t_item" 匹配t_hero或者t_item的项

  5. grep "t_hero\|t_item" 可以兑现和方一样的效力

经统计,我这些年的行事日志出现的中文单词频率从高到底的眼前几乎称作分别是:工作(4269破)、和(3781糟)、我(2919次)、在(2703赖)、完成(2304赖)、任务(2254潮)。连起来读也格外有趣的。

cat 查看文件

-n:为各国行前面加上行号。-n会为空白行也添加行号,-b选项则会越了空白行。
-s:压缩相邻之空行,即连续的空白行将削减也同样执行。
-T:用^I符号表示牵制表符\t

4、再次利用reduce方法将只有词汇总到一个暗含两独数组的高频组,其中之一保存去重后的单词,另外一个保存和之对应之单词计数;

同台时间

为管理人身份实施如下命令,可以活动与网时间共同:
time.nist.gov 是一个光阴服务器
$ rdate -s time.nist.gov

2、将诸一行的字符串使用中文分词库进行私分,得到一个个华语单词(当然日志被为有英文与数字);

date 时间

  1. 亮时间

    date [OPTION]… [+FORMAT]
    date “+%Y-%m-%d %H:%M:%S” #亮当前的年月日时转

  2. 设置时间

    date -s //设置当前光阴,只有root权限才会安装,其他只能查看。
    date -s 20080523
    //设置成20080523,这样见面管实际时间设置成空00:00:00
    date -s 15:20:30 //设置时间
    date +%s //当前时间时穿

  3. 易时
    管linux下的年华戳转换成现实中之年月日时转

    date –d @timestamp
    eg:$date -d @1433087999
    2015年 05月 31日 星期日 23:59:59 CST

思不思就此做一下雅数额试验?不欲各种繁复的申辩,你就需要使用Javascript即可。近期自家研究了一下Javascript语言自带的map、reduce、filter当办法,尝试一下怎么样以MapReduce的思绪统计自工作日志被各种词汇出现的效率,也算一个轻量级的“大数量”“挖掘”试验了。

printf

用以格式化输出,使用的参数与C语言中之printf函数一样
eg:printf "%-5s %-10s %-4.2f\n" 1 James 80.9968
-:表示左对合,默认为右对合
s:表示打印的凡字符串
f:表示打印一个浮点数,其中4意味着宽度,.2代表保留2位小数
printf默认不带换行,需要手动添加

说起来好像比空虚,还是扩代码比较一直:

ls 列出目录

以下是几乎栽方式列出当前路线下之目。

ls –d */
ls –F | grep "/$"
ls –l | grep "^d"
find . –type d –maxdepth 1 –print

脚举个例证,使用的数据源是自己六年差不多之做事日志,大概两千篇,三万六千大抵履。使用nodejs条件运行javascript,实际上完全好当浏览器里运行,nodejs操作文件于有利,为了便利,直接nodejs吧。要惦记拿中文单词从言语中分离出去要编制中文分词代码,但是由匪是本例研究主要,咱直接运用nodejieba(一个中文分词库,使用方便,执行效率为杀对)。

echo 打印

-n 打印语句后非会见换行。
-e 开启转义,即可以打印后面的 \t,\r 等转义字符
好打印彩色文本。

6、将结果写副文件;

文件通配符

* 匹配文件称吃之外字符串,包括空字符串。
? 匹配文件称中之另单个字符。
[...] 匹配[ ]饱受所涵盖的任何字符。可以用 – 连接,表示范围
[!...] 匹配[ ]中非 感叹号!之后的字符。
如:
5* 5开头的所有字符串
*5 5结尾的具有字符串
*5? 以5为倒数第二只字符的字符串
[0-9] 所有以数字之字符
[1,2]1 或者2
[!0-9] 不是数字的字符

尚时有发生来比较有趣的,“问题”出现967坏,“可以”出现1095差,看来办法总比问题基本上啊。

wc 统计

采取wc的各种选项来统计行数、单词数和字符数。
主要参数:

-l :行数
-w :单词数
-c :字符数

cut 剪切

cut
命令于文本之各一样执剪切字节、字符和字段并将这些字节、字符和字段写及正规输出,必须指定
-b-c-f 标志之一。
主要参数

-b: 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c: 以字符为单位进行分割。(单个字母等)
    cut –c2-5 file  ,表示将文件file每行的第2-5个字符作为一列显示出来。
-d: 自定义分隔符,默认为制表符。
-f: 与-d一起使用,指定显示哪个区域。
    例子:cat file.txt | cut -d']' -f7;
        cat file.txt | cut -d']' –f4,7;//打印4和7列
        cat file.txt | cut -d']' –f4-7;//打印4到7列
-n: 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
--complement: 与-f一起使用,指定显示哪个区域的补集。

vim 文本编辑工具

vimdiff 文本差异对比
vimdiff FILE_LEFT FILE_RIGHT
常用命令:

Ctrl-w K 把当前窗口移到最上边
Ctrl-w H 把当前窗口移到最左边
Ctrl-w J 把当前窗口移到最下边
Ctrl-w L 把当前窗口移到最右边
Ctrl-w,w  在两个文件之间来回跳转
]c   跳转到下一差异点
[c   跳转到上一差异点,可在前面加上数字,表示跳转多少个差异
dp(diff put) 把一个差异点中当前文件的内容复制到另一个文件中
do(diff get) 另一个文件的内容复制到当前行中
:diffupdate 手工来刷新比较结果
zo(folding open) 展开被折叠的相同的文本行
zc(folding close) 重新折叠

mkdir 创建目录

常用参数:

-p: 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
-m <777>: 模式,设定权限<模式>
-v: 在创建目录的同时输出信息。

uniq 去重

-c : 统计重复的行数
-u : 只显示不重复的那些行
-d : 只显示重复的那些行
-s n : 指定跳过前n个字符
-w n : 指定用于比较的最大字符数

find 查找

find dir [option] 'command'
dir: 目录名,用空格隔开多单目录

  1. [option]列表:

    -name wildcard 文件称,wildcard表示通配符,并非正则式
    find dir1 dir2 -name ‘.c’ –print
    在目dir1和dir2中查找文件,并打印路径
    苟当-name后面紧跟一个-prune,则意味是目录应吃修剪
    find . ( -name “.svn” -prune ) -o –print
    表示于查找的目录,要么修剪掉(.svn),要么打印出来(其他)。
    -iname 忽略名字大小写
    -path 指定目录,如果当-path前面加上 !
    ,则意味着忽略这个目录,目录名好使用通配符匹配。
    -type 文件类型
    f:普通文书 d:目录 l:符号连接文件 c:字符设备文件 b:块设备文件
    p:管道文件
    -size ±nc 查找大于(+)或低于(-)n字节之公文,注意c(charter)
    -mtime ±ndays 文件最近修改时间
    -user,-nouser 文件所有者
    -group,-nogroup 指定文件用户组
    大多规格的以及(-a)/或(-o)/非(!)
    find . ( -name “
    .txt” –o –name “*.sh” ) –print
    括号两限当来空格
    -maxdepth n 指定最深目录深度,n=1表示最好远当前目录
    -mindepth n 指定最小目录深度,n=2代表未打印当前目录下之文书
    -maxdepth和-mindepth应作find的老三个参数出现,以提高效率

  2. ‘command’命令列表:

    -print 打印路径名
    -delete 对找到的文本进行去
    -exec 对查找到的对象实行某同命令。
    find ${workdir} -name “$filename” -exec |grep $uid
    -exec
    参数后与的是bash命令,但只能和一个发令,如果想实行多只令,那么得拿多独指令放上一个shell脚本,然后实施这本子。
    bash命令的停止,使用 ‘;’ (分号)来判断,在背后要产生一个
    ‘;’在分号前相应长转义字符”
    ‘{}’,使用{}来表示文件称,也就是是find前面处理过程中过滤出来的公文,用于bash命令进行拍卖
    -ok
    与-exec类似,只是对查找到符合条件的对象实行一个发令前用经过确认

split 大文件切割

split -b 500m file newfile_prefix

-l:行数,指定每多少行切成一个小文件。
-b:指定每多少字就要切成一个小文件。支持单位:m,k
-C:与-b参数类似,但切割时尽量维持每行的完整性。
-d:指定切割后的文件名以数字作为后缀

合并: cat newfile_prefix* > newfile

ln 链接

主要参数:

-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
    ln –s target new
    为target文件建立一个软链接new指向target
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本

xargs 参数传递

xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr] [-L number] [-n number [-x]] [-P maxprocs] [-s size] [utility [argument ...]]
为另外命令传递参数的一个过滤器,也是整合多个令的一个工具。
最经典应用模式: somecommand | xargs -item command
不带command,默认的行使echo输出

用途:
1.构造参数列表并运行命令,即将接受的参数传递给末端的command令执行
2.拿多尽输入转换为单行(特殊作用)

优点:
1.以输入参数整理后,去除<newline>转移行符,以一个列表形式处理
2.免参数过长引发的题材,使用xargs -n
参数适当控制,对于时常产生大量输出的指令如findlocategrep来说很有效

-item 代表选项:

-0      当sdtin含有特殊字元时候,将其当成一般字符,想/'空格等
-a file 从文件中读入作为sdtin
-e flag 注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-E EOF  指定输入结束符
-n num  后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-p      操作具有可交互性,每次执行comand都交互式提示用户选择,当每次执行一个argument的时候询问一次用户
-t      表示先打印命令,然后再执行。
-i      或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给{},可以用{}代替。
-r      no-run-if-empty 如果没有要处理的参数传递给xargsxargs 默认是带 空参数运行一次,如果你希望无参数时,停止 xargs,直接退出,使用 -r 选项即可,其可以防止xargs 后面命令带空参数运行报错。
-s      num xargs后面那个命令的最大命令行字符数(含空格) 
-L      从标准输入一次读取num行送给Command命令 ,-l和-L功能一样
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符
-x      exit的意思,如果有任何 Command 行大于 -s Size 标志指定的字节数,停止运行 xargs 命令,-L -I -n 默认打开-x参数,主要是配合-s使用
-P      修改最大的进程数,默认是1,为0时候为as many as it can.

sed 处理内容

sed [options] 'command' file(s)
sed [options] -f scriptfile file(s)
一样坏拍卖一行内容 不改动文件内容
[options]列表:

-n : 取消默认的输出,使用安静(silent)模式。
-r : 使用正则表达式,及表达式中不需要进行转义
-f filename : 指定sed脚本的文件名filename
-e '' : 允许多重编辑·  
-i : 将替换结果应用于源文件
  1. 轮换字符串
    sed 's/pattern/string/' file
    或者
    cat file | sed 's/pattern/string/'
  2. 轮换文件中具备匹配内容,使用参数g
    sed 's/pattern/string/g' file
    唯独要您想由第N介乎匹配起来轮换,可以采取参数/Ng
    $ echo thisthisthisthis | sed 's/this/THIS/2g' thisTHISTHISTHIS
  3. sed的定界符’/’.当匹配模式中含有’/’字符时,我们用为此”对定界符’/’进行转义
    $ echo a/b | sed 's/a\/b/a*b/' a*b
    为了避免转义字符造成的掌握困难,我们得行使另外定界符,比如|,:,@,#,$,%,+等等
    $ echo a/b | sed 's:a/b:a*b:' a*b
  4. 移除匹配样式行 sed '/pattern/d' file
    $ sed -r '/^ *$/d' args.txt #移除空白行,含有一个或多个空格的行
  5. 重组多个表达式

$ echo abd | sed 's/a/A/' | sed 's/d/D/'  #用管道组合
$ echo abd | sed 's/a/A/;s/d/D/'           #用分号组合
$ echo abd | sed -e 's/a/A/' -e 's/d/D/'  #用-e选项组合
  1. 既配合配字符串标记(&)
    &代表匹配给定样式的字符串,常用于对加样式增加[],{}等不需要改变样式的情形

$ echo "this is an example" | sed 's/\w\+/[&]/g'   #\w\+ 匹配每个单词
[this] [is] [an] [example]
  1. 子串匹配标记(\1)
    偶然我们期望对郎才女貌给定的体制标记出片子串来,方便后续引用
    \(pattern\) 用于匹配子串pattern
    \1 用于引用第一独相当到之子串,\n 对诺第n单相当到的子串。

$ echo 123 asd | sed 's/\([0-9]\+\) \([a-z]\+\)/\2+\1/' 
asd+123

其中\1对准许数字123,\2对诺字母asd
对此子串的援,在样式里肯定要用()括起来,如果长-r选项,则未欲转义:

$ echo 123 asd | sed -r 's/([0-9]+) ([a-z]+)/\2+\1/'
asd+123
  1. 引用
    在剧本中中之一点,用对引号引用的sed表达式,会针对表达式求值来展开扩张,如采用前定义的变量等

$ text=hello
$ echo hello world | sed "s/$text/HELLO/"
HELLO world

chmod 权限

运用chmod命令设置文件权限。
chmod a+x file

u : 指定用户权限
g : 指定用户组权限
o : 指定其他用户权限
a : 指定所有类别
+ : 增加权限
- : 删除权限
r : 可读
w : 可写
x : 可执行,对目录文件来说表示可访问目录中的文件和子目录

正则表达式

鉴于一般字符和特殊字符(meta字符)组成
meta元字符
\ 通常用于打开或关闭持续字符的特殊意义,如(…)与{…}
. 匹配任何单个字符(除NULL)
* 匹配前面的子表达式任意次,例:a* 匹配任意多独a
? 匹配前面的子表达式零次或雷同糟糕匹配前面的子表达式一蹩脚还是频繁。
+ 匹配前面的子表达式一涂鸦还是数
^ 匹配输入字符串的始位置
$ 匹配输入字符串的终结位置
[]
匹配方括号内的任一字符,其中可用连字符(-)指的连接字符的限;^符号若出现在方括号的首先个职务,则象征相当不在列表中的任一字符
(x|y) 匹配x或y,比如:(g|f)ood,匹配good或food

jps 显示java进程

亮当前系统的java进程情况,及其id号。我们好透过她来查我们究竟启动了几乎独java进程(因为各级一个java程序还见面把持一个java虚拟机实例),和她俩之经过号(为下几乎独程序召开准备),并可由此opt来查这些过程的详细启动参数。
主要参数:

-q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数
-m 输出传递给main 方法的参数,在嵌入式jvm上可能是null
-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名
-v 输出传递给JVM的参数

管道符: |

即使管前的指令运行的若放入标准输出的结果丢给后面的命
cat 1.txt | cat

md5sum MD5

MD5都称是报文摘要算法(Message-Digest Algorithm
5),此算法对自由长度的音信逐位进行计算,产生一个二进制长度也128员(十六进制长度32位)的“指纹”(或如“报文摘要”),即使少只文本就去一个字符,产生的校验和也完全两样。

  1. 使用md5sum来出指纹(报文摘要)命令如下:

    md5sum file > file.md5
    假定不指定文件称,则从专业输入读取,也可是输出及正式输出设备,因此可和管道符“|”连用。
    足以文件通配符,将大半只文件之md5价值输出到与一个文书。
    文本file.md5的始末如下:

    c0e207c045c344ebf363c3e9a6de1076 file
    首先排列是md5校验和,第二排是对准诺文件称。

  2. 使用md5报文摘要说明文件。
    以扭转的file.md5文件在对应file文件之同一目录下。使用如下命令验证:

    md5sum -c file.md5

若验证成功,输出“file: 确定”;验证失败则输出“file:
失败”,并打印警告信息:“md5sum: 警告:1/1 生成的校验和不般配”。

tail 查看文件

用以展示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常因此查看日志文件
主要参数

-f :循环读取   #可以用在监控线上有没有报错信息
-q :不显示处理信息
-v :显示详细的处理信息
-c<数目> :显示的字节数
-n<行数> :显示行数
--pid=PID :与-f合用,表示在进程ID,PID死掉之后结束. 
-q, --quiet, --silent :从不输出给出文件名的首部

paste 拼接

据此paste命令实现按列拼接。
$ paste file1 file2 file3...
参数:
-d:指定定界符