shell ${val:0:3)含义

Linux56

${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系统中的所有进程
shell ${val:0:3)含义

top 详解 及 使用

上面的top
shell ${val:0:3)含义

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
shell ${val:0:3)含义

  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' &#xA0;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