sed

Using AWK to merge unique rows based on column one

僤鯓⒐⒋嵵緔 提交于 2020-03-17 03:19:23
问题 I am trying to write an AWK script to summarize data on a large text file. The order of the resulting data is important so i can't use sort. I have tried different variations of FNR==NR but haven't had any luck Input file Height 3.5 Weight 12.3 Age 23 : : Height 4.5 Weight 15.5 Age 31 : : Expected Output Height 3.5 4.5 Weight 12.3 15.5 Age 23 31 回答1: With awk: awk '{a[$1]=a[$1] FS $2} END{for(i in a) print i a[i]}' file Output: Weight 12.3 15.5 Height 3.5 4.5 : Age 23 31 Derived from: how to

How can I insert a variable containing a backslash in sed?

不打扰是莪最后的温柔 提交于 2020-03-16 08:01:50
问题 Please see these simple commands: $ echo $tmp UY\U[_ $ echo "a" | sed "s|a|${tmp}|g" UY[_ The \U is eaten. Other backslashes won't survive either. How can I make the above command work as expected? 回答1: If it's only backslash that is "eaten" by sed and escaping just that is enough, then try: echo "a" | sed "s|a|${tmp//\\/\\\\}|g" Confusing enough for you? \\ represents a single \ since it needs to be escaped in the shell too. The inital // is similar to the g modifier in s/foo/bar/g , if you

How can I insert a variable containing a backslash in sed?

血红的双手。 提交于 2020-03-16 08:01:10
问题 Please see these simple commands: $ echo $tmp UY\U[_ $ echo "a" | sed "s|a|${tmp}|g" UY[_ The \U is eaten. Other backslashes won't survive either. How can I make the above command work as expected? 回答1: If it's only backslash that is "eaten" by sed and escaping just that is enough, then try: echo "a" | sed "s|a|${tmp//\\/\\\\}|g" Confusing enough for you? \\ represents a single \ since it needs to be escaped in the shell too. The inital // is similar to the g modifier in s/foo/bar/g , if you

llinux系统下应用版本上线自服务脚本

霸气de小男生 提交于 2020-03-15 16:04:28
    鉴于肺活量有限,在潜水了半年多之后上岸来透透气觉着是时候写点东西了,能力有限都是记录平常工作中遇到的问题以及解决方法,如果再能帮到有相似问题的同仁,那就算是额外收获了!【抱拳】     其实写这个的初衷也是,之前几个系统上线部署的时候写过自动上线部署的脚本,但每次发布完之后,可能本地没有保存副本,导致再上线的时候又得去登系统再做部分修改,再部署脚本太繁琐了(主要还是记性不好),每次去网上找相关的部署脚本,基本大同小异也不知道到底文章的源头是谁。自己想要的也找不到,俗话说自己动手丰衣足食废话不多说直接上脚本。 写脚本之前先交代一下整个升级的流程:     上边的流程大体是这样,其实整体并不难,复杂的是之前的各种判断。看下脚本是写成了两个脚本文件,上线部署和失败后的回退脚本,应用启停的脚本过会再提供。 #!/bin/bash # # SCRIPTNAME:sdwan_version.sh # DATE: 2020/03/13 # author: Mright # version: V1.3 # desc: # V1.2:增加version.info文件到应用用户目录下,保存即将部署的应用版本号以及当前生产上部署的 # 版本号,应用部署完成后将版本号回写到version.info中 # V1.3:调整version.info内容可记录不同应用版本号

linux sed命令详解

只愿长相守 提交于 2020-03-15 09:00:45
简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed使用参数 [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

linux sed 批量替换字符串

耗尽温柔 提交于 2020-03-15 09:00:20
#################################################### 获取文件内容处理输出 ############################################################## #解析入库配置,获取表名: echo -e '[table]\ntablename=entry_listquery_fatdt0|flatcookie_fatdt0|path_fatdt0|path_stream_fatdt0|refer_listquery_fatdt0' > ./testfile sed -n 's/^tablename=//p' ./testfile | sed -e 's/|/\n/g' -e 's/\r//g' | sort | uniq > ./test_tablename #(-n)选项和p标志一起使用表示只打印那些发生替换的行 #(-e)选项允许在同一行里执行多条命令,上面是将'|'替换为换行,然后将\r去除 #校验入库配置表名和文件名数量是否一致: tableCount=`wc -l ./test_tablename` fileCount=`ll jobs/EnLog/DFSLoader/conf/loaddb | wc -l ` fileCount=`echo $fileCount-1 | bc`

linux sed命令详解

一曲冷凌霜 提交于 2020-03-15 09:00:07
简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。 sed使用参数 [root@www ~]# sed [-nefr] [动作] 选项与参数: -n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e :直接在命令列模式上进行 sed 的动作编辑; -f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作; -r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法) -i :直接修改读取的文件内容,而不是输出到终端。 动作说明: [n1[,n2]]function n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』

linux sed 批量替换字符串

孤街浪徒 提交于 2020-03-15 08:59:48
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。 (1)sed 'y/1234567890/ABCDEFGHIJ/' test_sed sed 'y/1234567890/ABCDEFGHIJ/' filename ABCDEFGHIJ BCDEFGHIJA CDEFGHIJAB DEFGHIJABC 注意变换关系是按两个list的位置对应变换 其中:test_sed的内容是: 1234567890 2345678901 3456789012 4567890123 (2) 替换每行所有匹配 sed 's/01/Ab/g' test_sed 1234567890 23456789Ab 3456789Ab2 456789Ab23 注意:第一行的0,1没有分别替换为A,b 删除:d命令 $ sed '2d' example-----删除example文件的第二行。 $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。 $ sed '$d'

linux sed 批量替换字符串

为君一笑 提交于 2020-03-15 08:59:26
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。 (1)sed 'y/1234567890/ABCDEFGHIJ/' test_sed sed 'y/1234567890/ABCDEFGHIJ/' filename ABCDEFGHIJ BCDEFGHIJA CDEFGHIJAB DEFGHIJABC 注意变换关系是按两个list的位置对应变换 其中:test_sed的内容是: 1234567890 2345678901 3456789012 4567890123 (2) 替换每行所有匹配 sed 's/01/Ab/g' test_sed 1234567890 23456789Ab 3456789Ab2 456789Ab23 注意:第一行的0,1没有分别替换为A,b 删除:d命令 $ sed '2d' example-----删除example文件的第二行。 $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。 $ sed '$d' example-----删除example文件的最后一行。 $ sed '/test/'d

linux sed 批量替换字符串

时光总嘲笑我的痴心妄想 提交于 2020-03-15 08:59:15
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做: sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules` 解释一下: -i 表示inplace edit,就地修改文件 -r 表示搜索子目录 -l 表示输出匹配的文件名 这个命令组合很强大,要注意备份文件。 (1)sed 'y/1234567890/ABCDEFGHIJ/' test_sed sed 'y/1234567890/ABCDEFGHIJ/' filename ABCDEFGHIJ BCDEFGHIJA CDEFGHIJAB DEFGHIJABC 注意变换关系是按两个list的位置对应变换 其中:test_sed的内容是: 1234567890 2345678901 3456789012 4567890123 (2) 替换每行所有匹配 sed 's/01/Ab/g' test_sed 1234567890 23456789Ab 3456789Ab2 456789Ab23 注意:第一行的0,1没有分别替换为A,b 删除:d命令 $ sed '2d' example-----删除example文件的第二行。 $ sed '2,$d' example-----删除example文件的第二行到末尾所有行。 $ sed '$d'