首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Shell 编程(六):文本三剑客之 Awk

Copy 打印处理行行号 > awk '{print NR}' student.txt 1 2 3 4 5 Bash Copy 打印多文件单独记录行号 > awk '{print FNR}' string.txt..."&"}{print $3}' string.txt awk 'BEGIN{RS="--";FS="|";ORS="&"}{print $3}' string.txt Bash Copy 输出文件名 >...Bash Copy 匹配两种用法 RegExp 匹配 /etc/passwd 文件行中含有 root 字符串所有行 > awk '/root/{print $0}' passwd root:x:0:...减 * 乘 / % 模 ^或** 乘方 ++x 在返回 x 变量之前,x 变量加1 x++ 在返回 x 变量之后,x 变量加1 使用 awk 计算 /etc/services 中空白行数量 >...,str) 在 str 中搜索符合 RE 字串,将其替换为 RepStr;(替换所有) 替换个数 以:为分隔符,返回 /etc/passwd 中每行中每个字段长度 > awk '{print length

30820
您找到你想要的搜索结果了吗?
是的
没有找到

Shell脚本编程

0 * @ # $1,$2,…:对应调用第1,第2等参数 $0:命令本身 $*:传递给脚本所有参数(把所有参数当作整体) $@:传递给脚本所有参数 $#:传递给脚本参数个数 案例1: myecho.sh.../bin/bash echo "命令本身是:$0" echo "第一个参数是:$1" echo "第二个参数是:$2" echo "一共有$#个参数" echo "所有参数是:$@" 案例2:判断所给文件行数...也就是expr这个命令后面跟是3个参数 练习题 练习1:计算/etc/passwd文件中第10个用户第20个用户ID之和 练习2:传递两个文件路径参数给脚本,计算这两个文件之中所有空白行之和...来获取返回值 函数参数 funWithParam(){ echo "第一个参数为 $1 !" echo "第二个参数为 $2 !" echo "第十个参数为 $10 !"...当n>=时,需要使用${n}来获取参数 调试脚本 -x : 在执行时显示参数和命令; +x:禁止调试 -v:当命令行进行读取时显示输入; +v:禁止打印输入。

2.1K20

培养这10个习惯,你就离UNIX高手更进一步了

如果键入 f,然后按 Esc 键,将填充 file,之后你需要输入 1、2 或 3 来完成相应文件名Bash Bash Shell 也提供了文件名补全功能,但它使用 是Tab 键。...您在 Bash Shell 中不需要设置任何选项即可启用文件名补全功能,该选项是缺省设置Bash 还实现了其他功能。...重用以前参数 !$ 命令返回某个命令使用的上一个文件名参数。但如果某个命令使用多个文件名,而您只希望重用其中一个文件名,该如何做? !:1 操作符返回某个命令使用第一个文件名。...匹配行尾之外任意单个字符 星号 (*) 匹配零个或多个前驱字符或表达式 {x,y} 匹配出现过 x 到 y 个和前面相同内容 {x} 精确匹配出现过 x 个和前面相同内容 {x,} 匹配出现过...{print a[i]; i++;} }' text testing the awk command 打印文本文件中指定字段是一项简单 awk 任务。

76720

如何编写一个shell脚本

-name filename -print  tee: 将数据输出到标准输出设备(屏幕) 和文件比如:somecommand | tee outfile  basename file: 返回不包含路径文件名比如...-mtime -1 -type f -print  用来查找过去24小时(-mtime –2则表示过去48小时)内修改过文件。如果您想将所有查找到文件打一个包,则可以使用以下脚本:   #!...$*,该变量包含了所有输入命令行参数值。...通常惯例是在所有可选参数之前加一个减号,后面再加上参数值 (比如文件名)。   有好多方法可以实现对输入参数分析,但是下面的使用case表达式例子无遗是一个不错方法。 #!...脚本首先在所有输入命令行参数中进行循环,将输入参数与case表达式进行比较,如果匹配则设置一个变量并且移除该参数。根据unix系统惯例,首先输入应该是包含减号参数

1.7K40

shell(一)

2.3.3.1和脚本文件相关变量 符号 意义 $0 获取当前执行shell脚本文件名 $$ 获取执行shell脚本进程号 $n 获取当前执行shell脚本第n个参数值,n=1..9,当n为0时表示脚本文件名...-v:显示不包含匹配文本所有行。 如果配合管道符使用,后面的文件名是不用写。 小技巧:精确定位错误代码。 -r代表是递归执行命令。...格式: sed-i'行号a\增加内容'文件名 注意:如果增加多行,可以在行号位置写个范围值,彼此间使用逗号隔开: sed -i '1,3a\增加内容' 文件名 示例: 在第2行下一行增加内容 add-first...命令格式: awk [参数] '[动作]' [文件名] 常见参数: -F:制定行分割符。 常见动作: print:显示内容。 $0:显示当前行所有内容。...'{print $1}' awk.txt nihao nihao 打印第1行第1列和第3列内容: ethanyan@ethanyan-PC:~$ awk 'NR==1 {print $1,$3}'

3.4K50

iOS自动化探索(四)自动化测试框架pytest - 安装和使用

; inc方法是我们定义一个自增函数,该函数将传递进来参数加1后返回; test_answer是我们编写一个测试函数,其中我们使用基本断言语句assert来对结果进行验证,测试函数以test_xxx...testing/ 运行包含指定关键字测试方法, 可以是文件名、类名、测试函数名 pytest -k "MyClass and not method" 执行node id运行测试脚本,每一个被收集测试方法都会分配一个指定...但如果所有脚本运行时间都小于0.01s, 就不显示了, 除非带上-vv参数 pytest --durations=10 -vv 输出结果: ==============================...import pytest print pytest.main() 输出: (wda_python) bash-3.2$ python pytestDemo.py ================...-3.2$ 我们还可以在main中传递参数: pytest.main(['-q','test_sample.py']) 给pytest.main添加plugin, 如下示例在执行开头和结尾, 添加打印信息

1.3K21

详解bash脚本调试机制

以调试模式运行脚本 通过bash -x 方式可以在调试模式下运行整个脚本, bash会在在运行前打印出了每一行命令, 而且每行前面用+号表明命令嵌套层数. > bash -x debug.sh...+ echo 'First line' First line # 输出结果没有加号 ++ date # 先执行命令替换 两个加号是因为该命令嵌套在echo中 + echo 'Print datetime...关键字用于在解释出现错误时执行预设操作, 例如打印出错命令: trap 'echo $BASH_COMMAND' ERR 但鉴于使用trap进行调试执行效率过低, 建议在较为复杂脚本中直接使用调试选项或者使用...短命令 长命令 效果 set -f set -o noglob 对文件名停用元字符匹配 set -v set -o verbose 打印输入命令 set -x set -o xtrace 命令行首打印...设置选项辅助调试 为了方便调试,我们可以使用set命令对bash选项进行设置: > set -o # 查看所有选项开关状态 > set -o | grep xtrace xtrace off

1.3K31

shell语法学习

10.使用 AND 运算符 AND 运算符允许我们程序检查是否同时满足多个条件。由 AND 运算符分隔所有部分必须为 true。否则,包含 AND 语句将返回 false。...;; *) echo "Neither 100 nor 200" ;; esac Bash 条件写在 case 和 esac 关键字之间。*)用于匹配 100 和 200 以外所有输入。.../test.sh X=44 Y=100 Bash 它应该返回 X+Y=144。这里参数存储在 “$@” 中,脚本使用 Linuxcut 命令获取它们。...fi Bash 我们直接从命令行传递文件名作为参数。...34.添加批处理扩展 下面的示例将对目录中所有文件应用自定义扩展名。创建一个新目录,并将一些文件放在其中以供演示。我文件夹共有五个文件,每个文件名为 test,后跟(0-4)。

1.2K40

Bash特殊变量:$0, $#, $*, $@, $?, $$实战

例如,$ 表示当前Shell进程ID,即pid,看下面的代码: $echo $$ 运行结果 29949 特殊变量列表 变量 含义 $0 当前脚本文件名 $n 传递给脚本或函数参数。...n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数参数个数。 $* 传递给脚本或函数所有参数。 $@ 传递给脚本或函数所有参数。.../bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted...形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有参数作为一个整体,以"$1 $2 … $n"形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 形式输出所有参数

90240

40 个简单又有效 Linux Shell 脚本示例

/hello-world.sh 它将打印出传递给脚本内部回显字符串。 2、使用 echo 打印 echo 命令用于在 bash打印信息。...10、使用 AND 运算符 AND 运算符允许我们程序检查是否同时满足多个条件。由 AND 运算符分隔所有部分必须为 true。否则,包含 AND 语句将返回 false。...*)用于匹配 100 和 200 以外所有输入。 14、命令行参数 在许多情况下,直接从命令 shell 获取参数是有益。下面的示例演示了如何在 bash 中执行此操作。 #!...fi 我们直接从命令行传递文件名作为参数。...34、添加批处理扩展 下面的示例将对目录中所有文件应用自定义扩展名。创建一个新目录,并将一些文件放在其中以供演示。我文件夹共有五个文件,每个文件名为 test,后跟(0-4)。

15510

Shell 编程(六):文本三剑客之 Awk

内置变量 语法格式 解释 $0 打印所有信息 $1 - $n 打印第 1 到 n 个字段信息 NF (Number Field) 处理行字段个数 NR (Number Row) 处理行行号...Jerry 98 wang 87 打印每行行字段个数 > awk '{print NF}' student.txt 5 5 5 5 5 打印处理行行号 > awk '{print NR}' student.txt...$3}' string.txt 输出文件名 > awk '{print FILENAME}' string.txt string.txt 格式化输出之 printf 格式符 含义 %s 打印字符串 %...:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 匹配 /etc/passwd 文件行中以 yarn 开头所有行 > awk '/^yarn...;(替换所有) 替换个数 以:为分隔符,返回 /etc/passwd 中每行中每个字段长度 > awk '{print length($0)}' passwd 31 32 39 36 40 31

1.2K40

五、常用模块

(path) 返回path规范化绝对路径 20 os.path.split(path) 将path分割成目录和文件名二元组返回 21 os.path.dirname(path) 返回path目录...其实就是os.path.split(path)第一个元素 22 os.path.basename(path) 返回path最后文件名。如何path以/或\结尾,那么就会返回空值。...将多个路径组合后返回,第一个绝对路径之前参数将被忽略 28 os.path.getatime(path) 返回path所指向文件或者目录最后存取时间 29 os.path.getmtime(path...创建压缩包并返回文件路径,例如:zip、tar base_name: 压缩包文件名,也可以是压缩包路径。...默认匹配\n之外任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r"^a","\nabc\

70090

一文掌握shell脚本基本语法

$1是第1参数、$2是第2参数、…、$n表示第n个参数。⚠️注意:10以上要用大括号,如{10}。 $? 最后运行命令结束代码(返回值),执行成功返回0,不成功则返回非零值(一般解释为错误码)。...如 "$*"用「"」括起来情况、以"$1 $2 … $n" 形式输出所有参数。 $@ 所有参数列表。如 "$@"用「"」括起来情况、以"$1" "$2" … "$n" 形式输出所有参数。...: bash +x paramshell.sh 7 77 #打印信息 This is $0 ---- : paramshell.sh # 显示文件名 This is $1 ---- :...ASCII码范围:33 ~ 126 之间字符 不包括空格字符(空格字符ASCII码是32) [:print:] 打印任何可视字符。...未指定pattern,则所有行都会被处理。 未指定ACTION,则屏幕直接打印匹配到行内容。

3.9K00

【建议收藏系列】爆肝3w字带你理解什么叫运维~

,但是函数定义中没有返回值也没有参数列表。...]可以匹配一位十六进制数字 ^ 位于[]括号内开头,匹配括号中字符之外任意一个字符 [^xy]匹配xy之外任一字符,因此[^xy]1可以匹配a1、b1但不匹配x1、y1 [[:xxx...-print 要想让系统高负荷运行,就从根目录开始查找所有的文件: $ find / -name "*" -print 如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt文件...9、使用type选项 在/etc目录下查找所有的目录,可以用: $ find /etc -type d -print 在当前目录下查找目录以外所有类型文件,可以用: $ find . !...pattern2 使用p命令需要注意,sed是把待处理文件内容连同处理结果一起输出到标准输出,因此p命令表示除了把文件内容打印出来之外还额外打印一遍匹配pattern行。

2K30

Python中*args和**kwargs

在上个例子中,调用函数打印”args”时,他会打印元组中包含所有数值。...a’之后只一个参数’*args’.因此,’args’接收常规参数之外位置参数作为元组。因此元组args作为元组接收12,34和43。...在这个函数中,我们使用内建函数’sum’,它使用元组或数列作为参数返回元组所有元素和。...接下来定义另外一个函数,该函数有任意个参数,并利用上一个函数来计算第一个参数之外其他参数和。...我们可以传任意个参数给这个函数。第一个参数被常规参数’a’接收,其他参数被’iargs’作为元组接收。正如我们考虑案例,计算第一个参数之外其他参数和。

99520

监控日志文件md5值更新时间,如果N分钟后无变化则重启应用

" $0:    /bin/bash $0  要监控文件 监控时间(单位:秒)   应用名称   应用关键字    '执行启动命令'     要做动作   exp:    /bin...= ""  ]];then third=$3 else print_log  "第三个参数,不能为空" exit fi #第四个参数判断 if [[ $4 !... /bin/bash $third  2>&1 | /usr/sbin/cronolog  $baselogdir/$first/$first...." $0:    /bin/bash $0  要监控文件 监控时间(单位:秒)   应用名称   应用关键字    '执行启动命令'     要做动作   exp:    /bin...= ""  ]];then third=$3 else print_log  "第三个参数,不能为空" exit fi #第四个参数判断 if [[ $4 !

1.3K60
领券