Linux awk 替换文本字符串内容
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
|
1
|
awk '{pattern + action}' {filenames} |
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
awk内置变量
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
ARGC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FILENAME awk浏览的文件名FNR 浏览文件的记录数FS 设置输入域分隔符,等价于命令行 -F选项NF 浏览记录的域的个数NR 已读的记录数OFS 输出域分隔符ORS 输出记录分隔符RS 控制记录分隔符$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。$NF是number finally,表示最后一列的信息,跟变量NF是有区别的,变量NF统计的是每行列的总数 |
awk 替换后写入文件awk的sub/gsub函数用来替换字符串
|
1
|
sub(/regexp/, replacement, target) |
注意第三个参数target,如果忽略则使用$0作为参数,即整行文本。
例子1:替换单个串
只把每行的第一个AAAA替换为BBBB
|
1
|
awk '{ sub(/AAAA/,"BBBB"); print $0 }' t.txt |
例子2:替换所有的串
把每一行的所有AAAA替换为BBBB
|
1
|
awk '{ gsub(/AAAA/,"BBBB"); print $0 }' t.txt |
例子3:替换满足条件的行的串
只在出现字符串CCCC的前提下,将行中所有AAAA替换为BBBB
|
1
2
3
|
awk '/CCCC/ { gsub(/AAAA/,"BBBB"); print $0; next } { print $0 } ' t.txt |
例子4:替换多个可选串
不管是AAAA,还是CCCC,全部替换为BBBB
|
1
|
awk '{ gsub(/AAAA|aaaa/,"BBBB"); print $0 }' t.txt |
例子5:全字匹配替换
全字匹配AAAA;即不匹配AAA,以及AAAAA,也就是说完整的四个字符串AAAA。
|
1
|
awk '{ sub(/\<AAAA\>/,"BBBB"); print $0 }' t.txt |
例子6:规则表达式匹配
把所有以A开头,不管后面连续包含几个A的串替换成一个字符B。
|
1
|
awk '{ gsub(/^A*/,"B"); print $0 }' t.txt |
awk 替换后写入文件
|
1
|
awk '{gsub(/tomcat/,"tomcatxxxx"); print $0 }' content.txt > test.tmp && mv test.tmp content2.txt |
替换满足条件的行的串
awk '/release/ { gsub(/false/,"true"); print $0; next }{ print $0 }' /home/yang/src/config.js > /home/yang/src/config.tmp && mv /home/yang/src/config.tmp /home/yang/src/config.js
Linux awk 替换文本字符串内容的更多相关文章
- linux批量替换文本字符串
(一)通过vi编辑器来替换.vi/vim 中可以使用 :s 命令来替换字符串.:s/well/good/ 替换当前行第一个 well 为 good:s/well/good/g 替换当前行所有 well ...
- SQL用replace替换文本部分内容
替换文本内容 update tk_question set stem=replace(cast(stem as varchar(max)) ,'被替换文本','替换文本') 查询字段内容长度 sele ...
- Linux批量替换文本,文件夹内所有文本内容
1.替换文件夹内所有文件匹配的字符串 sed -i "s/旧内容/新内容/g" `grep 旧内容 -rl 文件夹路径` 例如将/var/www/test文件夹下的所有文件内容中的 ...
- 【Linux】替换文本中的字符
替换单个文本中的字符,有两种方法,如下详解 VIM替换 打开文件 vim test.txt 替换 :%s/原字符串/替换字符串/gg 直接替换 sed -i 's/原字符串/替换字符串/g' `ls ...
- shell脚本,awk替换{}里面的内容
如何将oxo{axbxc}oxo{dxexf}oxo里面的{}里面的x 替换为; 用awk实现 [root@localhost 09-30]# echo 'oxo{axbxc}oxo{dxexf}ox ...
- linux下批量查找/替换文本内容
一般在本地电脑上批量替换文本有许多工具可以做到,比如sublime text ,但大多服务器上都是无图形界面的,为此收集了几条针对linux命令行 实现批量替换文本内容的命令: 1.批量查找某个目下文 ...
- bat批处理 查找替换:批处理如何查找并替换文本里特定字符串中的部分内容
批处理如何查找并替换文本里特定字符串中的部分内容 摘自:http://www.bathome.net/thread-43349-1-1.html 脚本如下: @if()==() echo off &a ...
- Linux sed命令实现替换文本内容
/root/data/code-s3201/publish_codex/deploy/db.properties db.properties中的 1.0.0.6 替换为 1.0.0.7 sed -i ...
- linux下的文本处理命令sed&awk&grep
Sedsed 是个精简的.非交互式的编辑器.他能执行和编辑vi和emacs相同的编辑任务.sed编辑器不提供交互使用方式:只能在命令行输入编辑命令.指定文件名,然后在屏幕上察看输出.sed编辑器没有破 ...
- 【Linux进阶】使用grep、find、sed以及awk进行文本操作
目录 一.元字符 二.grep命令 1. 过滤出包含某字符串的行 2. 过滤出以某字符串开头(结尾)的行 3. 过滤出包含某字符串及其相邻的行 4. 过滤出不包含某关键字的行 5. 过滤出包含多个字符 ...
随机推荐
- List循环问题
list循环时的问题,报错,称找不到该字段属性,原因如下: 1.字段名与toString里不匹配: 2.首字母大写了: 原回答:https://blog.csdn.net/qq_42671193/ar ...
- 微服务笔记之Eureka03(服务续约分析)
服务续约接口分析 com.netflix.eureka.resources.InstanceResource#renewLease public Response renewLease( @Heade ...
- cython并行性能-计算滚动求和 rolling function
cython通过编译为C程序提高性能有很多例子,通过OpenMP并行的性能没那么多. 今天尝试了一下似乎gcc对parallelism reduction优化的很厉害,加上OpenMP并行可以提高20 ...
- 题目集7-9总结性Blog
一.前言 通过对PTA的第七.八.九题目集的学习与总结,我感觉本三次题目集的题量不大,在完成范围之内.难度的话也一般,有难度,但是在解决范围之内,大多数较难的知识点可以通过自学(图书馆看书.看网课)的 ...
- (原创)odoo计算字段报CacheMiss异常
在odoo计算字段获取值的中的过程中报出odoo.exceptions.CacheMiss异常,常见的原因为是在计算字段方法中没有为该计算字段赋值.如图 方法"_compute_test&q ...
- LocalDateTime与LocalDate
时间新特性 新生事物出现,必定是对旧事物的完善或者是缺陷的弥补. 本文章介绍LocalDate.LocalDateTime.在多线程的情况,相比较于Date.Calendar.SimpleDateFo ...
- NanoPi R1 安装 python环境 及opencv
(友善NanoPi 1G RAM/8GB eMMC) 安装python2/python3 pip/pip3 环境 sudo apt-get install python sudo apt-get ...
- 《【转载】ChatGPT创始人,给我们上的8堂课》 回复
<[转载]ChatGPT创始人,给我们上的8堂课> https://tieba.baidu.com/p/8276644432
- HANA 2022 ME21N \ME31K 客制字段
问题:客制字段维护不上去 解决方案:抬头字段 打补丁 note 3275982 - Data loss observed in custom fields when working in the tr ...
- 使用ADB拷贝Android设备的文件夹
在当前目录下执行,拷贝到当前目录. 拷贝照片 adb pull sdcard/DCIM 删除照片 adb shell rm -rvf sdcard/DCIM 拷贝图片 adb pull s ...