echo “hello” 输出 hello
date 获得当前时间
pwd 获得当前路径
ls 和dir 显示当前目录下的文件
mkdir 文件夹名 新建文件夹
rm -rf -r 就是向下递归,不管有多少级目录,一并删除,-f 就是直接强行删除,不作任何提示的意思
vi 文件名 创建文件并编辑
esc 退出编辑模式进入阅读模式
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
dd 删除一行
ndd 删除n行
yy复制光标所在行
p,P粘贴
nyy 复制光标向下的多少行
0 或home 移动到所在行的开头
end或$移动到所在行的结尾
数字+G 移动到多少行
数字+enter 光标向下移动几行
数字+右方向键 移动多少个字符
gg 移动到第一行
/关键字 搜索
n 重复前一个搜寻的动作
:n1,n2s/word1/word2/g 在n1行与n2行之间将word1替换为word2
:1,$s/word1/word2/g 在第一行与最后一行之间将word1替换为word2
:1,$s/word1/word2/gc 在第一行与最后一行之间将word1替换为word2,提示用户确认
echo "hello" > bb 新建文件并写入
覆盖型写法 (文件里原来的内容被覆盖)
echo "aaa" > a.txt
echo aaa > a.txt
添加型写法 (新内容添加在原来内容的后面)
echo "aaa" >> a.txt
echo aaa >> a.txt
date "+%Y-%m-%d" 2016-01-29
mv mv mobudong /home/trial/jiangyi 移动到另一个文件夹
cp 复制
-r 复制目录
**top命令用于实时显示 process 的动态。**
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
**ps命令用于显示当前进程 (process) 的状态。**
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 不可中断的静止 (通悸□□缜b进行 I/O 动作)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
**kill命令用于删除执行中的程序或工作。**
kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或jobs指令查看。
killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令
1.命令格式:
killall[参数][进程名]
2.命令功能:
用来结束同名的的所有进程
3.命令参数:
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示。
su命令用于变更为其他使用者的身份,除 root 外,需要键入该使用者的密码。
sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
shutdown命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。
使用权限:系统管理者。
t seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有只用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-c : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间
message : 传送给所有使用者的警告讯息
reboot命令用于用来重新启动计算机。
若系统的 runlevel 为 0 或 6 ,则重新开机,否则以 shutdown 指令(加上 -r 参数)来取代
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
ping命令用于检测主机。
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
-d 使用Socket的SO_DEBUG功能。
-c<完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络界面送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p<范本样式> 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s<数据包大小> 设置数据包的大小。
-t<存活数值> 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。
ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
down 关闭指定的网络设备。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
io_addr<I/O地址> 设置网络设备的I/O地址。
irq<IRQ地址> 设置网络设备的IRQ。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[IP地址] 指定网络设备的IP地址。
[网络设备] 指定网络设备的名称。
ssh 远程登录
sftp 交互式文件传输,文件的上传下载
scp 两个linux之间复制文件
cut命令用于显示每行从开头算起 num1 到 num2 的文字。
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
范围之内,该字符将被写出;否则,该字符将被排除
linux 压缩与解压
gzip 只能压缩文件,不保留源文件
gunzip 解压
tar -cvf打包
tar -zcf Japan.tar.gz Japan 打包同时压缩 目录
tar -zxvf Japan.tar.gz 解包
zip shangyuan.zip shangyuan 保留源文件
zip -r 压缩目录
unzip 解压缩
bzip2 压缩比很高
bzip2 -k 保留源文件
bunzip -k 保留压缩包
tar -cjf Japan.tar.bzip2 Japan
tar -xjf Japan.tar.bzip2 解压缩
----------
cat 获取数据
正规表示法
http://vbird.dic.ksu.edu.tw/linux_basic/0330regularex_2.php#ps1
[root@www ~]# grep [-A] [-B] [--color=auto] '搜寻字串' filename
选项与参数:
-A :后面可加数字,为 after 的意思,除了列出该行外,后续的 n 行也列出来;
-B :后面可加数字,为 befer 的意思,除了列出该行外,前面的 n 行也列出来;
--color=auto 可将正确的那个撷取数据列出颜色
范例一:用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行
[root@www ~]# dmesg | grep 'eth'
eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
eth0: Identified 8139 chip type 'RTL-8139C'
eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
eth0: no IPv6 routers present
# dmesg 可列出核心产生的信息!透过 grep 来撷取网络卡相关资讯 (eth) ,
# 就可发现如上资讯。不过没有行号与特殊颜色显示!看看下个范例吧!
范例二:承上题,要将捉到的关键字显色,且加上行号来表示:
[root@www ~]# dmesg | grep -n --color=auto 'eth'
247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
248:eth0: Identified 8139 chip type 'RTL-8139C'
294:eth0: link up, 100Mbps, full-duplex, lpa 0xC5E1
305:eth0: no IPv6 routers present
# 你会发现除了 eth 会有特殊颜色来表示之外,最前面还有行号喔!
范例三:承上题,在关键字所在行的前两行与后三行也一起捉出来显示
[root@www ~]# dmesg | grep -n -A3 -B2 --color=auto 'eth'
245-PCI: setting IRQ 10 as level-triggered
246-ACPI: PCI Interrupt 0000:00:0e.0[A] -> Link [LNKB] ...
247:eth0: RealTek RTL8139 at 0xee846000, 00:90:cc:a6:34:84, IRQ 10
248:eth0: Identified 8139 chip type 'RTL-8139C'
249-input: PC Speaker as /class/input/input2
250-ACPI: PCI Interrupt 0000:00:01.4[B] -> Link [LNKB] ...
251-hdb: ATAPI 48X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache, UDMA(66)
# 如上所示,你会发现关键字 247 所在的前两行及 248 后三行也都被显示出来!
# 这样可以让你将关键字前后数据捉出来进行分析啦!
搜寻特定字串
grep -n 'the' regular_express.txt
反向选择
grep -vn 'the' regular_express.txt
无论大小写
grep -in 'the' regular_express.txt
利用中括号 [] 来搜寻集合字节
grep -n 't[ae]st' regular_express.txt
查询oo前面没有g的行
grep -n '[^g]oo' regular_express.txt
查询oo前面没有小写字母的行
grep -n '[^a-z]oo' regular_express.txt
当我们在一组集合字节中,如果该字节组是连续的,例如大写英文/小写英文/数字等等, 就可以使用[a-z],[A-Z],[0-9]等方式来书写,那么如果我们的要求字串是数字与英文呢? 呵呵!就将他全部写在一起,变成:[a-zA-Z0-9]。例如,我们要取得有数字的那一行,就这样:
[root@www ~]# grep -n '[0-9]' regular_express.txt
但由於考虑到语系对於编码顺序的影响,因此除了连续编码使用减号『 - 』之外, 你也可以使用如下的方法来取得前面两个测试的结果:
[root@www ~]# grep -n '[^[:lower:]]oo' regular_express.txt
# 那个 [:lower:] 代表的就是 a-z 的意思!请参考前两小节的说明表格
[root@www ~]# grep -n '[[:digit:]]' regular_express.txt
例题三、行首与行尾字节 ^ $
the 在行首
grep -n '^the' regular_express.txt
开头是小写字母
grep -n '^[a-z]' regular_express.txt
grep -n '^[[:lower:]]' regular_express.txt
开头不是英文字母
grep -n '^[^a-zA-Z]' regular_express.txt
那个 ^ 符号,在字节集合符号(括号[])之内与之外是不同的! 在 [] 内代表『反向选择』,在 [] 之外则代表定位在行首的意义!
行尾结束为小数点 (.) 的那一行,该如何处理:
[root@www ~]# grep -n '\.$' regular_express.txt
空白行
grep -n '^$' regular_express.txt
cat -n /etc/syslog.conf
# 在 CentOS 中,结果可以发现有 33 行的输出,很多空白行与 # 开头
[root@www ~]# grep -v '^$' /etc/syslog.conf | grep -v '^#'
# 结果仅有 10 行,其中第一个『 -v '^$' 』代表『不要空白行』,
# 第二个『 -v '^#' 』代表『不要开头是 # 的那行』喔!
例题四、任意一个字节 . 与重复字节 *
. (小数点):代表『一定有一个任意字节』的意思;
* (星星号):代表『重复前一个字节, 0 到无穷多次』的意思,为组合形态
需要找出 g??d 的字串,亦即共有四个字节, 起头是 g 而结束是 d
grep -n 'g..d' regular_express.txt
因为 * 代表的是『重复 0 个或多个前面的 RE 字符』的意义, 因此,『o*』代表的是:『拥有空字节或一个 o 以上的字节』, 特别注意,因为允许空字节(就是有没有字节都可以的意思),因此,『 grep -n 'o*' regular_express.txt 』将会把所有的数据都列印出来萤幕上!
那如果是『oo*』呢?则第一个 o 肯定必须要存在,第二个 o 则是可有可无的多个 o , 所以,凡是含有 o, oo, ooo, oooo 等等,都可以被列出来~
同理,当我们需要『至少两个 o 以上的字串』时,就需要 ooo* ,
grep -n 'ooo*' regular_express.txt
字串开头与结尾都是 g,但是两个 g 之间仅能存在至少一个 o ,亦即是 gog, goog, gooog.... 等等
grep -n 'goo*g' regular_express.txt
找出 g 开头与 g 结尾的字串,当中的字节可有可无
grep -n 'g.*g' regular_express.txt
找出『任意数字』的行列
grep -n '[0-9][0-9]*' regular_express.txt
例题五、限定连续 RE 字符范围 {}
我要找到两个 o 的字串
grep -n 'o\{2\}' regular_express.txt
我们要找出 g 后面接 2 到 5 个 o ,然后再接一个 g 的字串
grep -n 'go\{2,5\}g' regular_express.txt
我想要的是 2 个 o 以上的 goooo....g 呢?除了可以是 gooo*g
grep -n 'go\{2,\}g' regular_express.txt
----------
RE 字符 意义与范例
^word 意义:待搜寻的字串(word)在行首!
范例:搜寻行首为 # 开始的那一行,并列出行号
grep -n '^#' regular_express.txt
----------
word$ 意义:待搜寻的字串(word)在行尾!
范例:将行尾为 ! 的那一行列印出来,并列出行号
grep -n '!$' regular_express.txt
----------
. 意义:代表『一定有一个任意字节』的字符!
范例:搜寻的字串可以是 (eve) (eae) (eee) (e e), 但不能仅有 (ee) !亦即 e 与 e 中间『一定』仅有一个字节,而空白字节也是字节!
grep -n 'e.e' regular_express.txt
----------
\ 意义:跳脱字符,将特殊符号的特殊意义去除!
范例:搜寻含有单引号 ' 的那一行!
grep -n \' regular_express.txt
----------
* 意义:重复零个到无穷多个的前一个 RE 字符
范例:找出含有 (es) (ess) (esss) 等等的字串,注意,因为 * 可以是 0 个,所以 es 也是符合带搜寻字串。另外,因为 * 为重复『前一个 RE 字符』的符号, 因此,在 * 之前必须要紧接著一个 RE 字符喔!例如任意字节则为 『.*』 !
grep -n 'ess*' regular_express.txt
----------
[list] 意义:字节集合的 RE 字符,里面列出想要撷取的字节!
范例:搜寻含有 (gl) 或 (gd) 的那一行,需要特别留意的是,在 [] 当中『谨代表一个待搜寻的字节』, 例如『 a[afl]y 』代表搜寻的字串可以是 aay, afy, aly 即 [afl] 代表 a 或 f 或 l 的意思!
grep -n 'g[ld]' regular_express.txt
----------
[n1-n2] 意义:字节集合的 RE 字符,里面列出想要撷取的字节范围!
范例:搜寻含有任意数字的那一行!需特别留意,在字节集合 [] 中的减号 - 是有特殊意义的,他代表两个字节之间的所有连续字节!但这个连续与否与 ASCII 编码有关,因此,你的编码需要配置正确(在 bash 当中,需要确定 LANG 与 LANGUAGE 的变量是否正确!) 例如所有大写字节则为 [A-Z]
grep -n '[A-Z]' regular_express.txt
----------
[^list] 意义:字节集合的 RE 字符,里面列出不要的字串或范围!
范例:搜寻的字串可以是 (oog) (ood) 但不能是 (oot) ,那个 ^ 在 [] 内时,代表的意义是『反向选择』的意思。 例如,我不要大写字节,则为 [^A-Z]。但是,需要特别注意的是,如果以 grep -n [^A-Z] regular_express.txt 来搜寻,却发现该文件内的所有行都被列出,为什么?因为这个 [^A-Z] 是『非大写字节』的意思, 因为每一行均有非大写字节,例如第一行的 "Open Source" 就有 p,e,n,o.... 等等的小写字
grep -n 'oo[^t]' regular_express.txt
----------
\{n,m\} 意义:连续 n 到 m 个的『前一个 RE 字符』
意义:若为 \{n\} 则是连续 n 个的前一个 RE 字符,
意义:若是 \{n,\} 则是连续 n 个以上的前一个 RE 字符! 范例:在 g 与 g 之间有 2 个到 3 个的 o 存在的字串,亦即 (goog)(gooog)
grep -n 'go\{2,3\}g' regular_express.txt
grep
-c:只输出匹配行的计数。
-I:不区分大小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
grep '中村' data
显示符合中村的行
sed
删除某行
sed '1d' ab #删除第一行
sed '$d' ab #删除最后一行
sed '1,2d' ab #删除第一行到第二行
sed '2,$d' ab #删除第二行到最后一行
显示某行
sed -n '1p' ab #显示第一行
sed -n '$p' ab #显示最后一行
sed -n '1,2p' ab #显示第一行到第二行
sed -n '2,$p' ab #显示第二行到最后一行
sed -n '5,7p' ab #显示五到七行
使用模式进行查询
sed -n '/ruby/p' ab #查询包括关键字ruby所在所有行
sed -n '/\$/p' ab #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
增加一行或多行字符串
sed '1a drink tea' ab #第一行后增加字符串"drink tea"
sed '2i drink tea' ab 第二行前面添加字符串"drink tea "
sed '1,3a drink tea' ab #第一行到第三行后增加字符串"drink tea"
sed '1a drink tea\nor coffee' ab #第一行后增加多行,使用换行符\n
sed '1c Hi' ab #第一行代替为Hi
sed '1,2c Hi' ab #第一行到第二行代替为Hi
sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替换ruby为bird
sed -n '/ruby/p' ab | sed 's/ruby//g' #删除ruby
sed -i '$a bye' ab #在文件ab中最后一行直接输入"bye"
取代
sed 's/要被取代的字串/新的字串/g'
去掉包含addr:之前的内容
/sbin/ifconfig |grep 'inet addr'|sed 's/^.*addr://g'
去掉Bcast之后的内容
/sbin/ifconfig |grep 'inet addr'|sed 's/^.*addr://g'|sed 's/Bcast.*$//g'
去掉#之后的内容
sed 's/#.*$//g'
去掉空白行
sed '/^$/d'
直接修改文件内容(危险动作)
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
[root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
利用 sed 直接在 regular_express.txt 最后一行加入『# This is a test』
[root@www ~]# sed -i '$a # This is a test' regular_express.txt
# 由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增罗!
-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的资料一般都会被列出到萤幕上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑;
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作支援的是延伸型正规表示法的语法。(预设是基础正规表示法语法)
-i∶直接修改读取的档案内容,而不是由萤幕输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。通常 p 会与参数 sed -n 一起运作~
s ∶取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
awk
awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
取出第一列和第三列
last -n 5 | awk '{print $1 "\t" $3}'
awk 是『以行为一次处理的单位』, 而『以栏位为最小的处理单位』
NF 每一行 ($0) 拥有的栏位总数
NR 目前 awk 所处理的是『第几行』数据
FS 目前的分隔字节,默认是空白键
last -n 5| awk '{print $1 "\t lines: " NR "\t columns: " NF}'
列出第三列小于10的
awk 'BEGIN $3 < 10 {print $1 "\t " $3}'
me 1st 2nd 3th
VBird 23000 24000 25000
DMTsai 21000 20000 23000
Bird2 43000 42000 41000
cat pay.txt | awk 'NR==1 {printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"total"};NR>=2 {total = $2+$3+$4;printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3
,$4,total}'
me 1st 2nd 3th total
VBird 23000 24000 25000 72000.00
DMTsai 21000 20000 23000 64000.00
Bird2 43000 42000 41000 126000.00
----------
习题
找出在 /etc 底下含有星号 (*) 的文件与内容:
grep '\*' /etc/*
我们仅能找到 /etc 底下第一层子目录的数据,无法找到次目录的数据, 如果想要连同完整的 /etc 次目录数据
grep '\*' $(find /etc -type f)
全系统
grep '\*' $(find / -type f)
每次处理10个
find / -type f | xargs -n 10 grep '\*'
只知道档名
find / -type f | xargs -n 10 grep -l '\*'
我想要创建一个新的命令名为 myip , 这个命令能够将我系统的 IP 捉出来显示。而我想要有个新变量,变量名为 MYIP ,这个变量可以记录我的 IP 。
alias myip="ifconfig eth0|grep 'inet addr'|sed 's/^.*inet addr://g'| cut -d ' ' -f1"
MYIP=$(myip)
find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
将目前目录及其子目录下所有延伸档名是 c 的文件列出来。
# find . -name "*.c"
将目前目录其其下子目录中所有一般文件列出
# find . -ftype f
将目前目录及其子目录下所有最近 20 分钟内更新过的文件列出
# find . -ctime -20
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
$ find . -type f -perm 644 -exec ls -l { } ;
为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
$ find / -type f -size 0 -exec ls -l { } ;
查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们:
$ find /var/logs -type f -mtime +7 -ok rm { } ;
alias 用于设置指令的别名
----------
**printf**
%d 十进制有符号整数
%u 十进制无符号整数
%f 浮点数
%s 字符串
%c 单个字符
%p 指针的值
%e 指数形式的浮点数
%x, %X 无符号以十六进制表示的整数
%0 无符号以八进制表示的整数
%g 自动选择合适的表示法
\n 换行
\f 清屏并换页
\r 回车
\t Tab符
\xhh 表示一个ASCII码用16进表示,其中hh是1到2个16进制数
可以在"%"和字母之间插进数字表示最大场宽。
例如: %3d 表示输出3位整型数, 不够3位右对齐。
%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6,小数点占一位, 不够9位右对齐。
%8s 表示输出8个字符的字符串, 不够8个字符右对齐。
如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出.但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出;若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出.
另外, 若想在输出值前加一些0, 就应在场宽项前加个0。
例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。
如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度,小数点前的数字代表最小宽度。
例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。
例如: %ld 表示输出long整数
%lf 表示输出double浮点数
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐。
例如: %-7d 表示输出7位整数左对齐
%-10s 表示输出10个字符左对齐
文件的权限请查看鸟哥的linux私房菜
http://vbird.dic.ksu.edu.tw/linux_basic/0210filepermission.php
linux shell 函数
read one
read two
funum()
{
return $(($1+$2))
}
funum $one $two
echo $?;
funjian()
{
return $(($1-$2))
}
funjian $one $two
echo $?;
for((z=0;z<5;z++))
do
for((g=$z;g<5;g++))
do
printf " "
done
for((x=0;x<$z;x++))
do
printf "*"
done
echo
done
read aNum
case ${aNum} in
1) echo 'you select 1 '
;;
2)echo 'you select 2'
;;
*)echo "you do not select a number between 1 to 4"
;;
esac
$ stail -n1 mobudong 删除mobudong文件中最后一行
-n4 删除 最后四行
selcol 提取文本文件柱子(最大提取数128柱)
selcol -c1,2 mobudong
提取文本文件mobudong第一二列
selcol -c1 -c3 mobudong
提取文本文件mobudong第一三列
selcol -c3,5 mobudong
提取文本文件第三四五列
delcol 删除文本文件的柱
用法和selcol类似
rowc 计算文本文件的行数
rowc mobudong
colc 计算文本文件的每一行的列数
colc mobudong
ssort 排序文本文件(最大长度256,最大制定数128柱)
ssort -k3 mobudong
按照第三行进行排序
> 写入
sumsup 统计文本文件
-n
$ cat data
0001 新橋店 20060201 91 59 20 76 54
0001 新橋店 20060202 46 39 8 5 21
0001 新橋店 20060203 82 0 23 84 10
0002 池袋店 20060201 30 50 71 36 30
0002 池袋店 20060202 78 13 44 28 51
0002 池袋店 20060203 58 71 20 10 6
0003 新宿店 20060201 82 79 16 21 80
0003 新宿店 20060202 50 2 33 15 62
0003 新宿店 20060203 52 91 44 9 0
0004 上野店 20060201 60 89 33 18 6
0004 上野店 20060202 95 60 35 93 76
0004 上野店 20060203 92 56 83 96 75
将4到8列数字相加
$ sumup -k1,2 -c4,8 data
$ac-aggregate -k1,2 -c4,8 data
0001 新橋店 219 98 51 165 85
0002 池袋店 166 134 135 74 87
0003 新宿店 184 172 93 45 142
0004 上野店 247 205 151 207 157
$ cat data
1111 3
1111 5
1111 2
2222 3
2222 10
3333 4
3333 8
3333 9
3333 6
显示第一列有三个,总数量10个
$ sumup -n -k1 -c2 data
1111 3 10
2222 2 13
3333 4 27
带小数点
$ cat data
a 1.4 2.55
a 2 4
b 1.33 2.1
b 5.222 3.12
$ sumup -k1 -c2,3 data
a 3.4 6.55
b 6.552 5.22
获取指定列的和
$ cat data
a 1
b 2
c 3
$ sumup -c2 data
6
subtotal
获得文本文件部分汇总
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
$ subtotal -k1,2 -s3,4 -c5,9 data
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
01 埼玉県 @@ @@@@@@@@@@@@@@@ 219 98 51 165 85 02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
02 東京都 @@ @@@@@@@@@@@@@@@ 298 215 184 110 229 03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
03 千葉県 @@ @@@@@@@@@@@@@@@ 207 240 112 120 82 04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
04 神奈川県 @@ @@@@@@@@@@@@@@@ 170 134 138 211 118
total
对文本文件进行总汇总
$ total -s1,4 -c5,9 data
01 埼玉県 01 さいたま市 91 59 20 76 54
01 埼玉県 02 川越市 46 39 8 5 21
01 埼玉県 03 熊谷市 82 0 23 84 10
02 東京都 04 新宿区 30 50 71 36 30
02 東京都 05 中央区 78 13 44 28 51
02 東京都 06 港区 58 71 20 10 6
02 東京都 07 八王子市 82 79 16 21 80
02 東京都 08 立川市 50 2 33 15 62
03 千葉県 09 千葉市 52 91 44 9 0
03 千葉県 10 市川市 60 89 33 18 6
03 千葉県 11 柏市 95 60 35 93 76
04 神奈川県 12 横浜市 92 56 83 96 75
04 神奈川県 13 川崎市 30 12 32 44 19
04 神奈川県 14 厚木市 48 66 23 71 24
@@ @@@@@@@@@ @@ @@@@@@@@@@@@@@@ 894 687 485 606 514
hsum 在文本文件的旁边进行相加
$ cat data
20120101 12 22
20120102 23 5
20120103 54 6
$ hsum -c2,3 data
20120101 12 22 24
20120102 23 5 28
20120103 54 6 60
addup 文本文件累计柱
$ cat data
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
a店 4日目 131 84
a店 5日目 189 111
a店 6日目 350 20
a店 7日目 412 301
第四列 往下一直加
$ addup -c4 data
a店 1日目 103 62 62
a店 2日目 157 94 156
a店 3日目 62 30 186
a店 4日目 131 84 270
a店 5日目 189 111 381
a店 6日目 350 20 401
a店 7日目 412 301 702
$ cat data
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
a店 4日目 131 84
b店 1日目 210 113
b店 2日目 237 121
b店 3日目 150 82
b店 4日目 198 105
c店 1日目 81 52
c店 2日目 76 49
c店 3日目 38 21
c店 4日目 81 48
$ addup -k1 -c4 data
a店 1日目 103 62 62
a店 2日目 157 94 156
a店 3日目 62 30 186
a店 4日目 131 84 270
b店 1日目 210 113 113 <- 累計値をリセット
b店 2日目 237 121 234
b店 3日目 150 82 316
b店 4日目 198 105 421
c店 1日目 81 52 52 <- 累計値をリセット
c店 2日目 76 49 101
c店 3日目 38 21 122
c店 4日目 81 48 170
fmtcomma 文本文件的指定列 逗号形式的
$ cat data
20120101 0001 1200
20120102 0001 2334
20120103 0001 5432
$ fmtcomma -c3 data
20120101 0001 1,200
20120102 0001 2,334
20120103 0001 5,432
kcount
$ cat data
01 埼玉県 01 さいたま市
01 埼玉県 02 川越市
01 埼玉県 03 熊谷市
02 東京都 04 新宿区
02 東京都 05 中央区
02 東京都 06 港区
02 東京都 07 千代田区
02 東京都 08 八王子市
02 東京都 09 立川市
03 千葉県 10 千葉市
03 千葉県 11 市川市
03 千葉県 12 柏市
04 神奈川県 13 横浜市
04 神奈川県 14 川崎市
04 神奈川県 15 厚木市
04 神奈川県 16 小田原市
$ kcount -k1,2 data
01 埼玉県 3
02 東京都 6
03 千葉県 3
04 神奈川県 4
insratio 构成比
a店 1日目 103 62
a店 1日目 210 113
b店 1日目 81 52
b店 1日目 75 48
b店 1日目 211 140
cat data | Istratio -k1,1 –c3,4
a店 1日目 103 32.9 62 35.4
a店 1日目 210 67.1 113 64.6
b店 1日目 81 22.1 52 21.7
b店 1日目 75 20.4 48 20.0
b店 1日目 211 57.5 140 58.3
insrank
$ cat data
JPN 杉山__ 26
JPN 崎村__ 27
JPN 梶川__ 27
JPN 柳本__ 30
USA BOB_______ 25
USA GEROGE____ 29
USA SAM_______ 29
USA TOM_______ 35
$ insrank -k1 -c3 data
1 JPN 杉山__ 26
2 JPN 崎村__ 27
2 JPN 梶川__ 27
4 JPN 柳本__ 30
1 USA BOB_______ 25
2 USA GEROGE____ 29
2 USA SAM_______ 29
4 USA TOM_______ 35
$ insrank -c3 data
1 JPN 杉山__ 26
2 JPN 崎村__ 27
2 JPN 梶川__ 27
4 JPN 柳本__ 30
5 USA BOB_______ 25
6 USA GEROGE____ 29
6 USA SAM_______ 29
8 USA TOM_______ 35
ejoin
$ cat master
0000003 杉山__ 26 F
0000005 崎村__ 50 F
0000007 梶川__ 42 F
0000010 柳本__ 50 F
$ cat kekka
0000000 91 59 20 76 54
0000001 46 39 8 5 21
0000003 30 50 71 36 30
0000004 58 71 20 10 6
0000005 82 79 16 21 80
0000007 50 2 33 15 62
0000008 52 91 44 9 0
0000009 60 89 33 18 6
0000010 95 60 35 93 76
0000011 92 56 83 96 75
将kekka中和master相同的数据提取出来
$ ejoin -k1 master kekka
0000003 30 50 71 36 30
0000005 82 79 16 21 80
0000007 50 2 33 15 62
0000010 95 60 35 93 76
$ ejoin -k2,3 master kekka
3 A 0000003 30 50 71 36 30
5 A 0000005 82 79 16 21 80
6 B 0000007 50 2 33 15 62
9 C 0000010 95 60 35 93 76
$ ejoin -v -k1 master kekka 反向
0000000 91 59 20 76 54
0000001 46 39 8 5 21
0000004 58 71 20 10 6
0000008 52 91 44 9 0
0000009 60 89 33 18 6
0000011 92 56 83 96 75
ijoin
把一个巨大的文字文件连接在内部
$ cat master
0000003 杉山__ 26 F
0000005 崎村__ 50 F
0000007 梶川__ 42 F
0000010 柳本__ 50 F
$ cat keihi
20070401 0000001 300
20070403 0000001 500
20070404 0000001 700
20070401 0000003 200
20070402 0000003 400
20070405 0000003 600
20070401 0000005 250
20070402 0000005 450
20070402 0000007 210
20070404 0000007 410
20070406 0000007 610
$ ijoin -k2 master keihi
20070401 0000003 杉山__ 26 F 200
20070402 0000003 杉山__ 26 F 400
20070405 0000003 杉山__ 26 F 600
20070401 0000005 崎村__ 50 F 250
20070402 0000005 崎村__ 50 F 450
20070402 0000007 梶川__ 42 F 210
20070404 0000007 梶川__ 42 F 410
20070406 0000007 梶川__ 42 F 610
$ cat kekka
1 A 0000000 91 59 20 76 54
2 A 0000001 46 39 8 5 21
3 A 0000003 30 50 71 36 30
4 A 0000004 58 71 20 10 6
5 A 0000005 82 79 16 21 80
6 B 0000007 50 2 33 15 62
7 B 0000008 52 91 44 9 0
8 C 0000009 60 89 33 18 6
9 C 0000010 95 60 35 93 76
10 C 0000011 92 56 83 96 75
$ ijoin -k2,3 master kekka
3 A 0000003 杉山__ 26 F 30 50 71 36 30
5 A 0000005 崎村__ 50 F 82 79 16 21 80
6 B 0000007 梶川__ 42 F 50 2 33 15 62
9 C 0000010 柳本__ 50 F 95 60 35 93 76
rjoin
巨大的文本文件左边链接
$ rjoin -k1 master kekka
0000000 @ @ @ 91 59 20 76 54
0000001 @ @ @ 46 39 8 5 21
0000003 杉山__ 26 F 30 50 71 36 30
0000004 @ @ @ 58 71 20 10 6
0000005 崎村__ 50 F 82 79 16 21 80
0000007 梶川__ 42 F 50 2 33 15 62
0000008 @ @ @ 52 91 44 9 0
0000009 @ @ @ 60 89 33 18 6
0000010 柳本__ 50 F 95 60 35 93 76
0000011 @ @ @ 92 56 83 96 75
crossjoin
文本文件交叉连接
$ cat data1
1 農業
2 工業
3 サービス業
$ cat data2
1 東京
2 大阪
3 名古屋
4 福岡
5 札幌
$ crossjoin data1 data2
1 農業 1 東京
1 農業 2 大阪
1 農業 3 名古屋
1 農業 4 福岡
1 農業 5 札幌
2 工業 1 東京
2 工業 2 大阪
2 工業 3 名古屋
2 工業 4 福岡
2 工業 5 札幌
3 サービス業 1 東京
3 サービス業 2 大阪
3 サービス業 3 名古屋
3 サービス業 4 福岡
3 サービス業 5 札幌
hejoin
$ cat master
0000003 jim 26 F
0000005 frank 50 F
0000007 alex 42 F
$ cat data
0000005 82 79 16 21 80
0000001 46 39 8 5 21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
0000003 30 50 71 36 30
0000007 50 2 33 15 62
从data表中选出符合master
$ hejoin -k1 master data
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2 33 15 62
反向
$ hejoin -v -k1 master data
0000001 46 39 8 5 21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
标准使用方法
$ cat data | hejoin –key=1 master
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2 33 15 62
$ cat data | hejoin –key=1 master -
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2 33 15 62
$ cat master | hejoin –key=1 - data
0000005 82 79 16 21 80
0000003 30 50 71 36 30
0000007 50 2 33 15 62
hijoin 文本文件连接在内部
$ cat master
0000003 jim 26 F
0000005 frank 50 F
0000007 alex 42 F
$ cat data
0000005 82 79 16 21 80
0000001 46 39 8 5 21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
0000003 30 50 71 36 30
0000007 50 2 33 15 62
$ hijoin -k1 master data
0000005 frank 50 F 82 79 16 21 80
0000003 jim 26 F 30 50 71 36 30
0000007 alex 42 F 50 2 33 15 62
hrjoin 把课外文件左外链接
$ cat master
0000003 jim 26 F
0000005 frank 50 F
0000007 alex 42 F
$ cat data
0000005 82 79 16 21 80
0000001 46 39 8 5 21
0000004 58 71 20 10 6
0000009 60 89 33 18 6
0000003 30 50 71 36 30
0000007 50 2 33 15 62
$ hrjoin -k1 master data
0000005 frank 50 F 82 79 16 21 80
0000001 @ @ @ 46 39 8 5 21
0000004 @ @ @ 58 71 20 10 6
0000009 @ @ @ 60 89 33 18 6
0000003 jim 26 F 30 50 71 36 30
0000007 alex 42 F 50 2 33 15 62
ojoin
$ cat data1
K11 K12 D111
K21 K22 D121
K31 K32 D131
$ cat data2
K11 K12 D211 D212
K31 K32 D231
K41 K42 D241 D242 D243
K11 K12 D111
K21 K22 D121
K31 K32 D131
$ cat data2
K11 K12 D211 D212
K31 K32 D231
K41 K42 D241 D242 D243
$ cat data3
K51 K52
将几个表的数据综合起来,没有数据的显示为0
、
$ ojoin -k1,2 data1 data2 data3
K11 K12 D111 D211 D212
K21 K22 D121 0 0
K31 K32 D131 D231
K41 K42 0 D241 D242 D243
K51 K52 0 0 0
append 合并文本文件
$ cat master
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
b店 1日目 210 113
b店 2日目 237 121
b店 3日目 150 82
c店 1日目 81 52
c店 2日目 76 49
c店 3日目 38 21
$ cat tran
a店 4日目 131 84
a店 5日目 189 111
b店 4日目 198 105
b店 5日目 259 189
c店 4日目 81 48
c店 5日目 98 61
$ append -k1 master tran
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
a店 4日目 131 84
a店 5日目 189 111
b店 1日目 210 113
b店 2日目 237 121
b店 3日目 150 82
b店 4日目 198 105
b店 5日目 259 189
c店 1日目 81 52
c店 2日目 76 49
c店 3日目 38 21
c店 4日目 81 48
c店 5日目 98 61
fstrow 提出最初的文本文件
$ cat data
0000007 セロリ 20060201 117
0000007 セロリ 20060202 136
0000007 セロリ 20060203 221
0000017 練馬大根 20060201 31
0000017 練馬大根 20060202 127
0000017 練馬大根 20060203 514
0000021 温州みかん 20060201 90
0000021 温州みかん 20060202 324
0000021 温州みかん 20060203 573
0000025 プリンスメロン 20060201 129
0000025 プリンスメロン 20060202 493
0000025 プリンスメロン 20060203 391
0000030 じゃが芋 20060201 575
0000030 じゃが芋 20060202 541
0000030 じゃが芋 20060203 184
$ fstrow -k1,2 data
$ac_first_row -k1,2 data 作用同上
0000007 セロリ 20060201 117
0000017 練馬大根 20060201 31
0000021 温州みかん 20060201 90
0000025 プリンスメロン 20060201 129
0000030 じゃが芋 20060201 575
lstrow 提出最后的文本文件
$ lstrow -k1,2 data
0000007 セロリ 20060203 221
0000017 練馬大根 20060203 514
0000021 温州みかん 20060203 573
0000025 プリンスメロン 20060203 391
0000030 じゃが芋 20060203 184
insseq
文本文件编排
$ cat data
0000007 セロリ 100
0000017 練馬大根 95
0000021 温州みかん 80
0000025 プリンスメロン 70
0000030 じゃが芋 30
看起来就是加了个序号
$ insseq data
1 0000007 セロリ 100
2 0000017 練馬大根 95
3 0000021 温州みかん 80
4 0000025 プリンスメロン 70
5 0000030 じゃが芋 30
$ cat data
関東 パスタ 100
関東 おにぎり 90
関東 パン 40
九州 おにぎり 150
九州 パン 140
九州 パスタ 100
不同的序号从1开始
$ insseq -k1,1 data
1 関東 パスタ 100
2 関東 おにぎり 90
3 関東 パン 40
1 九州 おにぎり 150 <- 連番値をリセット
2 九州 パン 140
3 九州 パスタ 100
divk
$ cat data
20120101 0001 1200
20120102 0001 2323
第三列除以1000,四舍五入
$ divk -s -c3 data
-s不四舍五入
20120101 0001 1.200
20120102 0001 2.323
20120103 0001 5.421
$ cat data
01 0.3418 1.5283 9.0023 7.1234 1234
02 3.1242 7.1423 6.5861 2.7735 1235
03 6.8254 2.6144 4.3234 3.4231 -1234
04 7.0343 3.3312 7.8678 1.3295 -1235
第二列四舍五入整数,第三列小数点第一位,第四列小数点第二位 第五列小数点第三位,第六列四舍五入
$ round -tA -c2.0 -c3.1 -c4.2 -c5.3 -c6.-1 data
01 0 1.5 9.00 7.123 1230
02 3 7.1 6.59 2.774 1240
03 7 2.6 4.32 3.423 -1230
04 7 3.3 7.87 1.330 -1240
升值
$ round -tB -c2.0 -c3.1 -c4.2 -c5.3 -c6.-1 data
01 1 1.6 9.01 7.124 1240
02 4 7.2 6.59 2.774 1240
03 7 2.7 4.33 3.424 -1240
04 8 3.4 7.87 1.330 -1240
降值
$ round -tC -c2.0 -c3.1 -c4.2 -c5.3 -c6.-1 data
01 0 1.5 9.00 7.123 1230
02 3 7.1 6.58 2.773 1230
03 6 2.6 4.32 3.423 -1230
04 7 3.3 7.86 1.329 -1230
tov
$ cat data
0000000 浜地 50 F 91
0000001 鈴田 50 F 46
0000003 杉山 26 F 30
0000004 白土40 M 58
行转为列
$tov -k1,2 data
0000000 浜地 50
0000000 浜地 F
0000000 浜地 91
0000001 鈴田 50
0000001 鈴田 F
0000001 鈴田 46
0000003 杉山 26
0000003 杉山 F
0000003 杉山 30
0000004 白土 40
0000004 白土 M
0000004 白土 58
toh
列转为行
$ cat data
0000000 浜地 50
0000000 浜地 F
0000000 浜地 91
0000001 鈴田 50
0000001 鈴田 F
0000001 鈴田 46
0000003 杉山 26
0000003 杉山 F
0000003 杉山 30
0000004 白土 40
0000004 白土 M
0000004 白土 58
$ toh -k1 data
0000000 浜地 50 F 91
0000001 鈴田 50 F 46
0000003 杉山 26 F 30
0000004 白土40 M 58
pivot 列转为行
$ cat data
a店 1日目 103
a店 2日目 157
a店 3日目 62
a店 4日目 131 ・ ・
d店 6日目 98
d店 7日目 101
$ pivot -k1 data
* 1日目 2日目 3日目 4日目 5日目 6日目 7日目
a店 103 157 62 131 189 350 412
b店 210 237 150 198 259 421 589
c店 81 76 38 81 98 109 136
d店 75 72 34 74 91 98 101
$ cat data
a店 1日目 103 62
a店 2日目 157 94
a店 3日目 62 30
a店 4日目 131 84 ・ ・
d店 6日目 98 69
d店 7日目 101 90
多列 以AB表示
$ pivot -k1 data
* 1日目 2日目 3日目 4日目 5日目 6日目 7日目
a店 A 103 157 62 131 189 350 412
a店 B 62 94 30 84 111 20 301
b店 A 210 237 150 198 259 421 589
b店 B 113 121 82 105 189 287 493
c店 A 81 76 38 81 98 109 136
c店 B 52 49 21 48 61 91 110
d店 A 75 72 34 74 91 98 101
d店 B 48 42 19 43 51 69 90
unpivot 行转为列
$ cat data
* 200901 200902 200903 200904 200905 200906
東京店 13282 2623 25246 11417 20176 16288
有楽町店 6072 30826 16277 24192 21545 29564
新橋店 16947 5745 361 14329 7520 28703
$unpivot -k1,1 data
東京店 200901 13282
東京店 200902 2623
東京店 200903 25246
東京店 200904 11417
東京店 200905 20176
東京店 200906 16288
有楽町店 200901 6072
有楽町店 200902 30826
有楽町店 200903 16277
有楽町店 200904 24192
有楽町店 200905 21545
有楽町店 200906 29564
新橋店 200901 16947
新橋店 200902 5745
新橋店 200903 361
新橋店 200904 14329
新橋店 200905 7520
新橋店 200906 28703
row2col 行列标题互换
$ cat data
店 売数 売上
渋谷 10 100
新宿 20 300
$row2col data
店 渋谷 新宿
売数 10 20
売上 100 300
readvalue 读值
$ cat data
A usp
B usp laboratory
C
$readvalue -uA data
usp
$readvalue -uB data
usp laborator
render 赋单位
cattempLISTLIST cat data
おにぎり 120 10 9 90
調理パン 100 8 5 62.5
幕の内 500 6 6 100
うどん 350 8 2 25
ラーメン 250 8 2 25
$render -lLIST temp1 data1
おにぎり 120円 10個 9個 90%
調理パン 100円 8個 5個 62.5%
幕の内 500円 6個 6個 100%
うどん 350円 8個 2個 25%
ラーメン 250円 8個 2個 25%
readvalues
$ cat data1
CODE 1234
NAME ABCD
AMOUNT 1,234
$ cat data2
CODE 5678
NAME EFGH
AMOUNT 12,000
$ cat data3
CODE 9999
NAME ZZZZ
AMOUNT 9,999
$ cat taga
NAME
按照名字输出
$ readvalues taga filenameNAME
CODE AMOUNT
ABCD 1234 1,234
EFGH 5678 12,000
ZZZZ 9999 9,999
fsplit 分割 把源文件按照某种形式分割为不同的文件
$ cat data
0001 0000007 20070201 117 8335 -145
0001 0000007 20070203 221 15470 0
0001 0000007 20070205 85 5950 0
0001 0000007 20070206 293 20527 -17
0001 0000007 20070207 445 31150 0
0002 0000007 20070202 150 11768 -1268
0002 0000007 20070203 588 41160 0
0002 0000007 20070204 444 31080 0
0002 0000007 20070205 600 43292 -1292
0002 0000007 20070206 605 42350 0
0002 0000007 20070207 920 64400 0
0003 0000007 20070201 530 38118 -1018
0003 0000007 20070202 359 25259 -129
0003 0000007 20070203 568 39760 0
0003 0000007 20070204 378 26460 0
0003 0000007 20070206 1325 92750 0
$fsplit %1.file_yc data
-rw-rw-r– 1 creat creat 172 5月 21 16:50 0001.file_yc
-rw-rw-r– 1 creat creat 212 5月 21 16:50 0002.file_yc
-rw-rw-r– 1 creat creat 178 5月 21 16:50 0003.file_yc
-rw-rw-r– 1 creat creat 210 5月 21 16:50 0004.file_yc
$cat 0001.file_yc
0001 0000007 20070201 117 8335 -145
0001 0000007 20070203 221 15470 0
0001 0000007 20070205 85 5950 0
0001 0000007 20070206 293 20527 -17
0001 0000007 20070207 445 31150 0
$cat 0002.file_yc
0002 0000007 20070202 150 11768 -1268
0002 0000007 20070203 588 41160 0
0002 0000007 20070204 444 31080 0
0002 0000007 20070205 600 43292 -1292
0002 0000007 20070206 605 42350 0
0002 0000007 20070207 920 64400 0
insweek 追加星期几
$ cat data
20120101 0001 12
20120102 0001 23
20120103 0001 54
$ insweek -j -c1 data
20120101 日 0001 12
20120102 月 0001 23
20120103 火 0001 54
fmtfloat
$ cat data
20120101 0001 001
20120102 0001 001.20
20120103 0001 030.400
去掉一些无意义的0
如0001 变为 1
$ fmtfloat -c3 data
20120101 0001 1
20120102 0001 1.2
20120103 0001 30.4
**shiftrow
把文本文件前后的记录连接**
$ cat data
0001 welcome1 5/1 1
0001 welcome2 5/2 4
0001 welcome3 5/3 4
0001 welcome4 5/4 4
0001 welcome4 5/5 7
0002 aaa 5/1 1
0003 bbb1 5/1 1
0003 bbb2 5/2 4
0003 bbb3 5/3 4
0003 bbb4 5/4 4
0003 bbb4 5/5 7
$ shiftrow -k1 data
0001 welcome1 5/1 1 welcome2 5/2 4
0001 welcome2 5/2 4 welcome3 5/3 4
0001 welcome3 5/3 4 welcome4 5/4 4
0001 welcome4 5/4 4 welcome4 5/5 7
0002 aaa 5/1 1
0003 bbb1 5/1 1 bbb2 5/2 4
0003 bbb2 5/2 4 bbb3 5/3 4
0003 bbb3 5/3 4 bbb4 5/4 4
0003 bbb4 5/4 4 bbb4 5/5 7
**lstblock
取块
$ cat file
20101231 0003 0001 1296 0001 20111201 1
20101231 0003 0001 1296 0002 20111201 1
20101231 0003 0001 1296 0003 20111201 1
20101231 0003 0001 1296 0001 20111203 1
20101231 0003 0001 1296 0002 20111203 1
20101231 0003 0001 1296 0003 20111203 1
20101231 0003 0001 1298 0001 20111201 1
20101231 0003 0001 1298 0002 20111201 1
20101231 0003 0001 1298 0003 20111201 1
20101231 0003 0001 1298 0004 20111201 1
20101231 0003 0001 1298 0005 20111201 1
$ lstblock -k1,4 -r6 file
20101231 0003 0001 1296 0001 20111203 1
20101231 0003 0001 1296 0002 20111203 1
20101231 0003 0001 1296 0003 20111203 1
20101231 0003 0001 1298 0001 20111201 1
20101231 0003 0001 1298 0002 20111201 1
20101231 0003 0001 1298 0003 20111201 1
20101231 0003 0001 1298 0004 20111201 1
20101231 0003 0001 1298 0005 20111201 1
qsstr
echo “name=shandong&country=zhongguo”|qsstr
name=shandong
country=zhongguo
echo “name=shandong feizhou&country=zhongguo”|qsstr -l_
name=shandong_feizhou
country=zhongguo
$ echo “name=shandong feizhou&country=zhongguo”|qsstr -i feizhou
name shandong feizhou
country zhongguo
**lock
文件锁定设置**
-f 指定锁定文件
-i 锁定文件无效时间
-t 单位 秒
$lock -flock -i30 –t30
unlock
解除文件锁定
unlock -flock
**substr
截取**
$ cat data
0000000 A 50 F
0000001 B 50 F
0000003 C 26 F
0000004 D 40 M
0000005 E 50 F
0000007 F 42 F
0000008 G 50 F
0000009 H 68 F
0000010 I 50 F
0000011 J 55 F
$ substr -c1.1.3 data
000 A 50 F
000 B 50 F
000 C 26 F
000 D 40 M
000 E 50 F
000 F 42 F
000 G 50 F
000 H 68 F
000 I 50 F
000 J 55 F
errchk
执行结果确认
**fmtdecimal
将指数变为小数**
$ cat data
20120101 0001 1e-2
20120102 0001 1.2
20120103 0001 1e+2
$ fmtdecimal -c3 data
20120101 0001 0.01
20120102 0001 1.2
20120103 0001 100
**fmtfixed
-w 每行有几个
将文本文件的指定队列用固定数字输出**
$ cat data
20120101 0001 1200
20120102 0001 2334
第三列 有5个
$ fmtfixed -w 5 -c3 data
20120101 0001 01200
20120102 0001 02334
20120103 0001 05432
lstd ?????
lstval ?????
szip ?????
scat ?????
smerge 将文件结果合并后输出
$cat data
0003 桍愳 栰揷 4901100 4316708 57586700 155000000 54974061 52577270 54974061 52577270 4316708 4867388
0004 揷懞 惵堜 2899900 2420590 34508100 92500000 31160806 31612332 31160806 31612332 2420590 2770165
$cat data1
0003 桍愳 栰揷 4901100 4316708 57586700 155000000 54974061 52577270 54974061 52577270 4316708 4867388
0004 揷懞 惵堜 2899900 2420590 34508100 92500000 31160806 31612332 31160806 31612332 2420590 2770165
smerge -k1 data data1
0003 桍愳 栰揷 4901100 4316708 57586700 155000000 54974061 52577270 54974061 52577270 4316708 4867388
0003 桍愳 栰揷 4901100 4316708 57586700 155000000 54974061 52577270 54974061 52577270 4316708 4867388
0004 揷懞 惵堜 2899900 2420590 34508100 92500000 31160806 31612332 31160806 31612332 2420590 2770165
0004 揷懞 惵堜 2899900 2420590 34508100 92500000 31160806 31612332 31160806 31612332 2420590 2770165
shiftrow
$cat data
0009 十天 高木 5986900 4917160 74
0009 中村 正一 3335300 3594273 441
0011 中村 正一 7349000 6940037 9
0012 远方 佐藤 6628600 5969891 84
0012 远方 佐藤 6628600 5969891 841032
$ shiftrow
0009 十天 高木 5986900 4917160 74 中村 正一 3335300 3594273 441
0011 中村正一 7349000 6940037 9
0012 远方 佐藤 6628600 5969891 84 远方 佐藤 6628600 5969891 841032
cln
-d 消除指定文字
$cat data
0001,”abc”,10
消除逗号
$ cln -d, data
0001 “abc” 10