${file:0:5}:提取最左边的5个字节:/dir1
${file:5:5}:提取第5个字节右边的连续5个字节:/dir2
例子:
pval=12345678
r=${pval:0:2}
echo $r #12
r=${pval:2:2}
echo $r #34
Original: https://www.cnblogs.com/longchang/p/13748140.html
Author: 龙行天下,畅通无阻
Title: shell ${val:0:3)含义
相关阅读1
Title: Ubuntu 进程 线程 查看 设置(top taskset)
top 的基本使用 taskset 的基本使用
top
主要用于查看 Linux系统中的所有进程
top 详解 及 使用
上面的top
top - 04:27:03 up 6 days, 23:25, # top 系统运行时间
2 users, # 用户个数
load average: 0.00, 0.00, 0.00 # 平均负载
Tasks: 258 total, 1 running, 257 sleeping, 0 stopped, 0 zombie
# 任务:总共258个,1个正在运行,257个睡眠,0个已停止,0个僵尸进程
%Cpu(s): 0.0 us, 1.6 sy, 0.0 ni, 98.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
# CPU使用率:用户空间占用CPU百分比 内核空间占用CPU百分比 不知道 空闲CPU百分比 不知道了......
MiB Mem : 16008.3 total, 273.1 free, 10718.1 used, 5017.1 buff/cache
# 内存使用率: 总计 空闲 使用 缓存
MiB Swap: 4096.0 total, 4094.5 free, 1.5 used. 4953.2 avail Mem
# 交换内存使用率: 总计 空闲 使用 可用内存
下面的top
PID USER PR NI VIRT RES
进程ID 进程所属用户 优先级 nice值 进程使用的虚拟内存总量,单位kb 进程使用的、未被换出的物理内存大小,单位kb。
SHR S
共享内存大小,单位kb 进程状态 D:不可中断的睡眠状态 R:运行 S:睡眠 T:跟踪/停止 Z:僵尸进程
%CPU %MEM TIME+ COMMAND
CPU占用百分比 内存占用百分比 进程使用的CPU时间总计,单位1/100秒 命令名
top 常用的命令
输入 1 : 显示所有 CPU 统计信息
输入 k ,会提示输入进程ID,输入ID后,可杀死对应进程
top -Hp PID :显示当前进程所有的线程
taskset
主要用于查看 当前进程中的 所有线程
Show or change the CPU affinity of a process.
Options:
-a, --all-tasks operate on all the tasks (threads) for a given pid
-p, --pid operate on existing given pid
-c, --cpu-list display and specify cpus in list format
-h, --help display this help
-V, --version display version
The default behavior is to run a new command:
taskset 03 sshd -b 1024
You can retrieve the mask of an existing task: # 您可以检索现有任务的掩码:
taskset -p 700
Or set it: # 或者设置 (掩码)
taskset -p 03 700
List format uses a comma-separated list instead of a mask: #
taskset -pc 0,3,7-11 700
Ranges in list format can take a stride argument:
e.g. 0-31:2 is equivalent to mask 0x55555555
taskset 的基本使用
1. 显示某个进程(线程)运行所在的核
taskset -cp PID
2. 设置某个进程(线程)运行的核
启动时设置 `taskset -c 0,10 ./bind_core`
运行中设置 `taskset -cp core PID` # core 可以为单个,或 列表 ,或 逗号分割
Original: https://www.cnblogs.com/qz652219228/p/16712726.html
Author: 细雨青山
Title: Ubuntu 进程 线程 查看 设置(top taskset)
相关阅读2
Title: 007 Linux 命令三剑客之-awk
Linux 命令三剑客,sed、grep、awk。
- sed:擅长数据修改。
- grep:擅长数据查找定位。
- awk:擅长数据切片,数据格式化,功能最复杂。
awk 更适合格式化文本,对文本进行较复杂格式处理,awk 程序对输入文件的每一行进行操作。awk 是一门解释型的编程语言。文本处理、输出格式化的文本报表、执行算数运算、执行字符串操作等等。
BEGIN { …. initialization awk commands …}{ …. awk commands for each line of the file…}END { …. finalization awk commands …}
- BEGIN{} 语句块在程序的开头执行,它只执行一次,在这里可以初始化变量。BEGIN 是 awk 的关键字,因此它必须为大写,注意,这个语句块是可选的;
- 主{ }部分,没有关键字,运行处理文件的每一行执行的命令;
-
END 语句块在程序的最后执行,END 是 awk 的关键字,因此必须为大写,它也是可选的。
-
awk 将每一行视为由多个字段组成,每个字段由"间隔符"分隔。默认情况下"间隔符" 是一个或多个空格字符,因此行:this is a line of text 包含6个字段。在 awk 中,第一个字段称为 $1,第二个字段称为 $2,以此类推,整行称为 $0。
- awk 内置变量 FS 可以设置间隔符,如设置 FS=":",则它将根据':'作为间隔符。
【内置变量】
- FS # 输入字段的分隔符
- NR # 当前行号,已读的记录数
- NF # 当前行中的字段数量
- $NF # NF 当前行中的字段数量(行参数数量),假如行参数有六个,那么NF=6,重点来了,如果我要取当前行的最后一个参数,使用 "$6" 和 "$NF" 都能取到最后一个参数,也就是说 $6=$NF=第6个参数值。
【常用可选参数】
- -v # 赋值一个用户定义变量
- -f # 从脚本文件中读取 awk 命令
-
-F # 相当于内置变量 FS
-
awk 可以对任何文件进行操作,包括 std-in,在这种情况下,它通常与 '|' 命令一起使用,例如,结合 grep,cat 或其他命令。
- awk 是一种面向行的语言。首先是模式,然后是动作。操作语句用" {} "括起来。
- awk 模式包括正则表达式 (使用与"grep -E"相同的语法) 和使用的组合特殊符号 "&&" 表示"逻辑AND ","||"表示"逻辑或","!" 的意思是"逻辑不"。
awk 'BEGIN{ commands } pattern{ commands } END{ commands }'
eg:统计指定ip和端口号,各种 tcp 连接状态的数量
netstat -n | grep 1.2.3.4:22 | awk '/^tcp/ {++State[$NF]} END {for (i in State) print i, State[i]}'
- 命令中,^tcp用于匹配开头包含tcp字符的文本行;
- $NF 指的是每行最后一个字段,数组State[$NF]就是以最后一个字段为下标指向一个存储单元或者说变量,此处代表该字段的统计结果, 也就是++的意义所在, 统计值自增一。
- END不能缺少表示END符号之后的指令于处理所有行结束时执行。
-
i是字段,State[i]即为统计结果,每行处理完成则State[$NF] 加1。
-
统计文本行数
awk 'END {print NR}' warn.log #统计 warn.log 文件行数。
- 指定以 , 为分隔符;输出为 hello world。
文本内容如下:
hello,world,awk,!
awk -F, '{print $1,$2}' info.log # -F, 指定以逗号分隔。
- 实现计算表达式
awk 'BEGIN{print 115+100}'
awk 命令,擅长文本格式化处理,这里只是起到一个抛砖引玉的作用,awk 语法较为复杂,感兴趣的可以深入学习,当然你也可以用 python 等语言来做一些脚本任务的处理。
「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!
Original: https://www.cnblogs.com/bilahepan/p/15848046.html
Author: 不甩锅的码农
Title: 007 Linux 命令三剑客之-awk
相关阅读3
Title: 005 Linux 命令三剑客之-sed
- grep:数据查找定位
- awk:数据切片,数据格式化,功能最复杂
- *sed:数据修改
三剑客各有所长,和锅锅一一搞起就是了!
- sed:擅长数据修改。
- grep:擅长数据查找定位。
-
awk:擅长数据切片,数据格式化,功能最复杂。
sed(全称:Stream Editor),擅长对文件做数据做修改的操作,非常高效。这里总结一些增删改的基础用法。 -
使用 vim 需要在文件内部编辑,有时只是想在文件底部添加一句话或一个参数,需要经历vim [文件] ->G (移动到底部)->o 下一行添加 ->编辑内容 ->保存退出。
- 这个步骤真麻烦,sed 可以轻便的实现这些功能!
- ps: 其实还有个echo命令也有这个功能,echo "文件内容" >> [文件名]。
使用示例:
- sed -i '$a 哈哈哈' info.log #在文件末尾追加"哈哈哈"字符串。
- sed -i '20a 啦啦啦' info.log #在文件【info.log】第20行字符下一行,追加字符串"啦啦啦"。
- sed -i '20i 啦啦啦' info.log #在文件【info.log】第20行字符上一行,追加字符串"啦啦啦"。
- sed -i 'a 嘎嘎' info.log #在文件【info.log】每行字符下一行追加字符串"嘎嘎"。
- sed -i 'i 大大' info.log #在文件【info.log】每行字符上一行追加字符串"大大"。
- sed -i '1i 第一行啦' info.log #在文件【info.log】开头插入字符串"第一行啦"。
- sed -i '/book/a HH' info.log #匹配包含 book 的行,并在其后添加 book。
使用示例:
- sed -i 's/book/books/' info.log #把【info.log】文件里第一个"book" 替换为"books"。
- sed -i 's/book/books/g' info.log #把【info.log】文件里所有的"book" 替换为"books"。
使用示例:
- sed -i '2d' info.log #删除【info.log】文件的第二行。
- sed -i '1,3d' info.log #删除【info.log】文件的1到3行。
- sed -i '/^啦啦啦/,/$HH/d' info.log #删除【info.log】中以 "啦啦啦" 开头一直到以"HH"结尾的行。
- sed -i '/^$/d' info.log #删除所有的空白行
(1)替换命令的格式
sed [选项] s/[pattern]/[replace]/[flags]
[选项]常用的几个参数:
- -f #script-file 从文件中读取脚本指令,对编写自动脚本程序很实用。
- -i #该选项将直接修改源文件,否则所有的操作对文件都不生效哦,当然线上使用的时候要谨慎!
- -e #script 允许多个脚本指令被执行。
[pattern]
含义:待匹配的需要替换的内容。
[replace]
常见的特殊含义字符:
- & # 用正则表达式匹配的内容进行替换。
- \ # 转义(转义替换部分包含:&、\等)。
[flags]
常见的可选参数:
- -n # 1-512之间的数字,表示对[pattern]中指定内容第n次出现进行替换。如一行中有3个H,而只想替换第二个H。
- -g # 对[pattern]中指定的内容进行全局更改。没有g则只有第一次匹配被替换。
(2) 多个sed命令执行
多个sed命令依次执行,用分号分割或加选项 -e,
使用示例:
- sed 's/yes/no/;s/static/dynamic/' info.log # 示例1,同时指定了2个sed命令。
- sed -e 's/yes/no/' -e 's/static/dynamic/' info.log #示例2,同时指定了2个sed命令。
(3)实践 sed 搜寻替换
把 test.html 文件中的第二个 <body></body>
替换为 。
<html>
<body>Hello the World!<body>
</body></body></html>
分析实际就是把第二个 body 替换为 /body,命令如下。
sed -i 's/body/\/body/2'  test.html
(4)实践 sed,写一个脚本实现替换功能
把 test.html 文件中的第二个 <body></body>
替换为 。
<html>
<body>Hello the World!<body>
</body></body></html>
分析实际就是把第二个 body 替换为 /body,命令如下。
编写执行脚本的步骤如下:
touch sed.sh
sed.sh 中写入脚本内容:
#sed替换脚本
s/body/\/body/2
对sed.sh 脚本赋予可执行权限
chmod ug+x sed.sh
执行sed.sh 脚本,对文件进行处理
sed -i -f sed.sh test.html
- (1)内置命令字符,即上面单引号内的的 i(insert)、a(append)、s(search&replace)、d(delete),插入、追加、替换、删除,分别小结了其用法。
- (2)$代表文件末尾,^代表文件开头。
- (3)sed 的 -i (注意这个是可选参数,和单引号内的 i 不是一个含义啦。)选项可以直接修改文件内容,这功能非常有帮助!如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!sed 命令却可以非常高效率的来干这个!
- (4)此外还介绍了 sed 的内置命令 s 的高级用法,sed 最擅长的就是数据修改!锅锅就说到这里,下期见!
「不甩锅的码农」原创,转载请注明来源,未经授权禁止商业用途!同名 GZH 请关注!
Original: https://www.cnblogs.com/bilahepan/p/15841199.html
Author: 不甩锅的码农
Title: 005 Linux 命令三剑客之-sed