linux命令

linux进程前后台切换

将后台进程放入前台
fg pid
将前台进程放在后台
bg pid

提取json数据

cat data.json
{
  "name": "xixi",
  "age": 35,
  "student": [
    {"name": "xiaolin", "age": 20},
    {"name": "anan", "age": 18}
  ]
}

提取以上json文件中name的值

jq '.name' data.json

输出字符串格式

jq -r '.name' data.json

 

 提取以上json文件student中name的值

jq  '.student|map(.name)' data.json

 提取以上json文件student中第一个name的值

jq '.student[0].name' data.json

  提取以上json文件student中xiaolin的age

jq '.student[]|select(.name=="xiaolin")|.age' data.json

排序

 sort

-b, --ignore-leading-blanks

忽略每一行前面的空白。例如,sort -b file 忽略行首空白进行排序

-d, --dictionary-order

按照字典顺序排序,只考虑字母、数字和空格。例如,sort -d file 以字典顺序排序

-f, --ignore-case

忽略大小写。例如,sort -f file 忽略大小写进行排序

-g, --general-numeric-sort

按照一般数值顺序排序。例如,sort -g file 将数值顺序排序

-i, --ignore-nonprinting

忽略非打印字符。例如,sort -i file 忽略非打印字符进行排序

-M, --month-sort

按照月份排序(JAN, FEB, MAR, ...)。例如,sort -M file 按月份排序

-n, --numeric-sort

按照数值顺序排序。例如,sort -n file 将数值按从小到大排序

-h, --human-numeric-sort

按照人类可读的数值顺序排序,例如,1K、1M、1G。例如,sort -h file 将人类可读数值顺序排序

-r, --reverse

反向排序。例如,sort -r file 反向排序输出

-k, --key=POS1[,POS2]

以指定的字段排序。字段从 1 开始。例如,sort -k 2 file 以第二个字段排序

-t, --field-separator=SEP

指定字段分隔符。默认是空白。例如,sort -t, -k 2 file 以逗号为分隔符,按第二个字段排序

-o, --output=FILE

将排序结果输出到指定文件。例如,sort -o sorted_file file 将排序结果保存到 sorted_file

-u, --unique

输出唯一的行(去重)。例如,sort -u file 去除重复行

-c, --check

检查输入是否已经排序。sort -c file 如果文件已经排序,则无输出;否则报错

-C, --check=quiet

-c,但不输出错误信息。例如,sort -C file 静默检查是否排序

-m, --merge

合并已经排序的文件。例如,sort -m sorted1 sorted2 合并 sorted1sorted2

-z, --zero-terminated

使用空字符(而不是新行)分隔输入。例如,sort -z file 处理用空字符分隔的输入行

用例 

ps -ef |awk 'FR!=1 {print $2}'|sort -n

ps -ef |awk 'NR!=1 {print $2}'|sort -nr

 

去除重复值

uniq

通常与 sort 命令结合使用,因为 uniq 只会处理相邻的重复行,而 sort 会将文件中的所有重复行排在一起

-c, --count

计算并显示每行出现的次数。例如,uniq -c file 会在每行前显示出现的次数

-d, --repeated

仅显示重复出现的行。例如,uniq -d file 只输出重复的行

-D, --all-repeated[=delimit-method]

显示所有重复的行,可以选择使用不同的分隔方法(例如,空行)。例如,uniq -D file 会输出所有重复行

-i, --ignore-case

忽略大小写。例如,uniq -i file 忽略大小写比较行

-f N, --skip-fields=N

跳过前 N 个字段。例如,uniq -f 2 file 忽略前两个字段进行比较

-s N, --skip-chars=N

跳过每行前 N 个字符。例如,uniq -s 3 file 忽略前 3 个字符进行比较

-w N, --check-chars=N

仅比较每行的前 N 个字符。例如,uniq -w 5 file 只比较每行的前 5 个字符

用例

sort cs.txt|unqi 

 

sort cs.txt|unqi -c

sort cs.sh |uniq -ci

传递值

xargs

用例

grep rl "data"|xargs rm -rf   #查询包含data内容的文件,并删除

取行列值

awk

常用参数

-F fs

指定字段分隔符。例如,awk -F, '{ print $1 }' file 将逗号作为分隔符

-v var=value

定义一个变量。例如,awk -v var=10 '{ print $1 + var }' file

内置变量

$0

当前记录(整行文本)

$n

第 n 个字段,例如,$1 是第一个字段

NF

当前记录中的字段数

NR

已读的记录数(行号)

内置函数

length(string)

返回字符串的长度

substr(string, start, length)

返回子字符串

toupper(string)

将字符串转换为大写

tolower(string)

将字符串转换为小写

print

输出文本

用例

文本内容

apple,fruit,1.2
banana,fruit,0.5
carrot,vegetable,0.7
date,fruit,1.5
elderberry,fruit,2.0
fig,fruit,1.8
awk -F, '{ print $1 }' file.txt

awk -F, '{print $1,$2}' file.txt 

awk -F, 'NR==1 {print $1,$2}' file.txt

awk -F, '$2 == "fruit" { print toupper($1) }' file.txt

筛选取值

grep

-i, --ignore-case

忽略大小写。例如,grep -i "pattern" file 会匹配 "Pattern", "PATTERN", 等

-v, --invert-match

反转匹配,显示不匹配的行。例如,grep -v "pattern" file 会显示不包含 "pattern" 的行

-c, --count

仅显示匹配的行数。例如,grep -c "pattern" file 会输出匹配 "pattern" 的行数

-l, --files-with-matches

仅显示包含匹配的文件名。例如,grep -l "pattern" * 会显示所有包含 "pattern" 的文件名

-L, --files-without-match

仅显示不包含匹配的文件名。例如,grep -L "pattern" * 会显示所有不包含 "pattern" 的文件名

-n, --line-number

显示匹配的行号。例如,grep -n "pattern" file 会显示匹配行及其行号

-H, --with-filename

显示匹配行所在的文件名(默认在多个文件时启用)。例如,grep -H "pattern" file1 file2

-h, --no-filename

在多文件搜索时不显示文件名。例如,grep -h "pattern" file1 file2

-r, --recursive

递归搜索目录及其子目录中的文件。例如,grep -r "pattern" /path/to/directory

-R, --dereference-recursive

递归搜索目录及其子目录中的文件,跟随符号链接。例如,grep -R "pattern" /path/to/directory

-w, --word-regexp

仅匹配整个单词。例如,grep -w "pattern" file 只会匹配独立的 "pattern",而不会匹配 "patterned" 或 "spatterns"

-x, --line-regexp

仅匹配整个行。例如,grep -x "pattern" file 只会匹配完全等于 "pattern" 的行

-A NUM, --after-context=NUM

显示匹配行以及之后的 NUM 行。例如,grep -A 3 "pattern" file 会显示匹配行及其后 3 行

-B NUM, --before-context=NUM

显示匹配行以及之前的 NUM 行。例如,grep -B 3 "pattern" file 会显示匹配行及其前 3 行

-C NUM, --context=NUM

显示匹配行以及前后各 NUM 行。例如,grep -C 3 "pattern" file 会显示匹配行及其前后各 3 行

-o, --only-matching

仅显示匹配部分。例如,grep -o "pattern" file 只会显示匹配到的 "pattern" 部分,而不是整行

-q, --quiet, --silent

安静模式,不输出任何内容,只返回状态码。例如,grep -q "pattern" file 用于脚本中检查是否有匹配

-E, --extended-regexp

使用扩展正则表达式。例如,grep -E "pattern1|pattern2" file 可以匹配 "pattern1" 或 "pattern2"

-F, --fixed-strings

使用固定字符串(而不是正则表达式)进行匹配。例如,grep -F "pattern" file 会将 "pattern" 视为固定字符串

-P, --perl-regexp

使用 Perl 兼容正则表达式。例如,grep -P "\bpattern\b" file 使用 Perl 风格的正则表达式语法

--exclude=GLOB

排除匹配的文件,例如,grep --exclude=*.log "pattern" * 排除所有 .log 文件

--include=GLOB

仅包含匹配的文件,例如,grep --include=*.txt "pattern" * 仅搜索 .txt 文件

--exclude-dir=DIR

排除匹配的目录,例如,grep --exclude-dir=logs "pattern" * 排除 logs 目录

用例 

grep -r --include=*.sh "data"

grep -rl --include=*.sh "data"

grep -q "data" 1.sh     #匹配到的情况下状态码为0
grep -q "123456" 1.sh   ##匹配不到的情况下状态码为1

查找替换

sed

-e script

指定要执行的 sed 脚本

-i[SUFFIX], --in-place[=SUFFIX]

直接编辑文件内容(即修改原文件),可选的 SUFFIX 参数用于备份文件

-n, --quiet, --silent

取消默认输出,仅显示脚本处理结果

s/pattern/replacement/flags

查找并替换。例如,s/old/new/g 将所有 old 替换为 new

d

删除匹配的行

p

打印匹配的行

a\text

在当前行后追加文本

i\text

在当前行前插入文本

c\text

用文本替换当前行

用例

示例文件file.txt

apple
banana
carrot
date
elderberry
fig
grape
sed '/apple/s/^/#/' file.txt    #在匹配内容的行首添加#

 

sed 's/e/E/g' file.txt

sed '2s/banana/mango/' file.txt    #仅将第二行的 banana 替换为 mango

 

sed '/carrot/d' file.txt   #删除包含 carrot 的行

sed '2a\cherry' file.txt   #在第二行后插入 cherry

 

sed -e 's/apple/kiwi/' -e '/fig/d' file.txt  #将 apple 替换为 kiwi,然后删除包含 fig 的行

 

查网络连接信息

ss

-a, --all

显示所有连接,包括监听和非监听连接

-t, --tcp

仅显示 TCP 连接

-u, --udp

仅显示 UDP 连接

-l, --listening

显示监听的套接字

-p, --processes

显示使用套接字的进程

-n, --numeric

以数字形式显示端口和地址(不进行名称解析)

-r, --resolve

尝试解析网络地址

-s, --summary

显示简要摘要信息

-i, --info

显示详细的 TCP 连接信息

-m, --memory

显示套接字使用的内存信息

列出当前系统中打开的文件

lsof

-c [command]

列出由特定命令打开的文件

-u [username]

列出特定用户打开的文件

-p [pid]

列出特定进程 ID 打开的文件

-d [file descriptor]

列出使用特定文件描述符的文件

-i [protocol]

列出符合条件的网络连接。例如,-i TCP-i UDP

-n

不进行 DNS 解析,以数字格式显示地址

-t

仅列出进程 ID(简洁模式)

lsof -u username   #列出由特定用户打开的文件
lsof -p pid    #列出特定进程 ID 打开的文件
lsof -c command  #列出特定命令打开的文件
lsof -i :port    #列出使用特定端口的网络连接
lsof -i UDP     #列出所有 UDP 网络连接
lsof -i @IP    #列出与特定 IP 地址相关的网络连接

查找并显示给定命令的可执行文件路径

which

which nginx

显示当前系统中运行的进程信息

ps

a:显示所有与终端相关的进程,包括其他用户的进程。

u:以用户为中心显示进程信息,包括用户名和启动时间。

x:显示没有控制终端的进程。

e:显示所有进程。

f:显示进程的完整格式,包括父进程信息。

l:显示长格式的进程信息。

m:带线程的查询

o:自定义输出格式。

p [pid]:显示特定进程 ID 的信息。

-C [command]:显示特定命令的进程信息。

-U [user]:显示特定用户的进程信息

ps -aux   #查询所有进程并包含用户信息
    

ps -ef    # 显示所有进程的完整格式信息

ps -eo pid,ppid,cmd,%mem,%cpu  #自定义输出格式

 

ps -mp 1603 -o tid,%cpu   #结合自定义查询,查询某程序下的所有线程

 

显示已加载的内核模块

lsmod

控制输出格式

printf 

%s 将参数输出为字符串

%f 将参数输出为浮点数

%o 将参数输出为八进制

%d 将参数输出为十进制

%x 将参数输出为十六进制

 用例

printf "教师:%s\n年龄:%x\n性别:%s\n" "linlin" "16" "boy"
#编写匹配语句,每个符号代表匹配一个值,其余的字符串,换行符可以随意添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值