sed

全局替换由crontab起的shell脚本中的某些字符串

久未见 提交于 2020-02-28 21:26:37
遇到这样一个需求: 需要替换crontab起的shell脚本中的某个域名,但是不知道crontab中到底有多少的shell脚本包含被替换的域名,难道要手工去查找么?于是写了个脚本,并通用之 功能:替换crontab中的shell脚本的某个字符串为另外一个,用法: Usage : sh replaceCronScript.sh src="string1" dst="string2" Example: sh replaceCronScript.sh src=clicklog.dtc.log.sz.com dst=soso1_0.dtc.log.sz.com #! /bin/bash ##################################################### #name : replaceCronScript.sh #note : replace some crontab shell scripts's # : string with new string #date : 2012.12.27 #author : <peterguo@vip.qq.com> #################################################### if [ $# -eq 0 ]; then echo "Usage : sh $

Linux学习之sed命令详解

旧城冷巷雨未停 提交于 2020-02-28 21:17:13
概述 sed是stream editor的简称,也就是流编辑器。它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。 使用语法 sed命令的使用规则是这样的: 1 sed [option] 'command' input_file 其中option是可选的,常用的option有如下几种: -n 使用安静(silent)模式(想不通为什么不是-s)。在一般sed的用法中,所有来自stdin的内容一般都会被列出到屏幕上。但如果加上-n参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来; -e 直接在指令列模式上进行 sed 的动作编辑; -f 直接将 sed 的动作写在一个文件内, -f filename 则可以执行filename内的sed命令; -r 让sed命令支持扩展的正则表达式(默认是基础正则表达式); -i 直接修改读取的文件内容,而不是由屏幕输出。 常用的命令有以下几种: a \: append即追加字符串, a \的后面跟上字符串s(多行字符串可以用\n分隔),则会在当前选择的行的后面都加上字符串s; c \: 取代/替换字符串,c

sed -i添加到第一行

你。 提交于 2020-02-28 10:03:54
用sed的i\命令在第一行前面插入即可,加上 -i 选项直接操作文件。 sed -i '1i\要添加的内容' yourfile 查看插入第一行是否成功 sed -n '1,1p' yourfile 来源: https://www.cnblogs.com/yuanjingnan/p/12375780.html

sed常用模板整理

北城余情 提交于 2020-02-27 09:24:18
sed可以按照指令或脚本编辑文本的linux工具,文本处理功能非常强大,本文总结一些工作中常用的sed模板,方便大家使用 替换 1. 替换文件中所有的 aaa 到 bbb sed -i 's/aaa/bbb/g' /path/to/file 2. 找到文件的修改日期 stat deploy | sed -n '/^Modify.*/p' # 找到 stat deploy | sed -n '/^Modify.*/p' | grep -Eo "....-..-.. ..:..:.." # 提取出修改起义 2. 找到 aaa 参数,并设置为off sed -i '/^aaa/s/on/off/' /path/to/file 可以配合grep使用,完成自动设置参数 have_aaa=$(grep aaa /path/to/file | sed '/^#.*/d') # 寻找是否以存在aaa参数 if [ ! -z $have_aaa ];then # 如果存在 sed -i '/^aaa/s/on/off/' /path/to/file # 则修改为off else # 如果不存在 sed -i '/ccc/a aaa off' /path/to/file # 则在ccc参数下新增 aaa off # sed -i '$a/aaa off' /path/to/file # 则在最后新增

在UNIX中grep一个选项卡

南笙酒味 提交于 2020-02-27 09:01:39
如何在Unix平台上的文件中 grep tab(\\ t)? #1楼 答案更简单。 写你的grep并在引用类型中选项卡键,它至少在ksh中运行良好 grep " " * #2楼 一个很好的选择是使用'sed as grep'(如本经典的 sed教程中所述 )。 sed -n 's/pattern/&/p' file 示例(适用于bash,sh,ksh,csh,..): [~]$ cat testfile 12 3 1 4 abc xa c a c\2 1 23 [~]$ sed -n 's/\t/&/p' testfile xa c a c\2 [~]$ sed -n 's/\ta\t/&/p' testfile a c\2 #3楼 如果使用GNU grep,您可以使用Perl样式的正则表达式: grep -P '\t' * #4楼 一种方法是(这是与Bash) grep -P '\t' -P 打开Perl正则表达式,因此\\ t将起作用。 正如用户 放松 所说,它可能是特定于GNU grep。 如果shell,编辑器或终端允许,可以选择在其中插入一个选项卡。 #5楼 使用gawk,将字段分隔符设置为tab(\\ t)并检查字段数。 如果超过1,则有/是标签 awk -F"\t" 'NF>1' file 来源: oschina 链接: https://my.oschina.net

让你的 Linux 命令骚起来

…衆ロ難τιáo~ 提交于 2020-02-27 03:38:13
@[toc] 本文将为读者提供许多不同 Linux 命令的简要概述。 将特别强调解释如何在执行数据科学任务的上下文中使用每个命令。 我们的目标是让读者相信这些命令中的每一个都非常有用,并且让他们了解每个命令在操作或分析数据时可以扮演什么角色。 管道符号 “ | ” 许多读者可能已经熟悉了“ | ”符号,但是如果不熟悉的话,值得提前指出: 下面几节中讨论的命令的所有输入和输出都可以使用“ | ”符号自动“管道”输入到彼此中! 这意味着每个命令完成的所有特殊任务都可以链接在一起,从而生成非常强大和简短的迷你程序,所有这些都直接在命令行上完成! grep 什么是 grep? “ grep”是一个可用于从文件中提取匹配文本的工具。 您可以指定许多不同的控件标志和选项,这些标志和选项允许您非常有选择性地确定希望从文件或流中提取哪些文本子集。 Grep 通常用作“面向行”的工具,这意味着在找到匹配的文本时,Grep 将打印该行上的所有文本,尽管您可以使用“-o”标志只打印匹配的行部分。 为什么 grep 是有用的? “ grep”很有用,因为它是在大量文件中搜索特定文本块的最快方法。 一些很好的用例有: 从巨大的 web 服务器日志中过滤访问特定的 web 页面; 为特定关键字的实例搜索代码库(这比使用 Eclipse Editor 的搜索要快得多,也更可靠) ; 在 Unix

sed中的非贪婪(勉强)正则表达式匹配?

末鹿安然 提交于 2020-02-26 23:09:35
我正在尝试使用sed清理URL的行以仅提取域。 来自: http://www.suepearson.co.uk/product/174/71/3816/ 我想要: http://www.suepearson.co.uk/ (不管有没有训练斜线,都没有关系) 我试过了: sed 's|\(http:\/\/.*?\/\).*|\1|' 和(转义非贪婪量词) sed 's|\(http:\/\/.*\?\/\).*|\1|' 但我似乎无法使非贪婪量词( ? )正常工作,因此它最终总是与整个字符串匹配。 #1楼 在这种情况下,您无需使用非贪婪的正则表达式就可以完成工作。 试试这个非贪婪的正则表达式 [^/]* 而不是 .*? : sed 's|\(http://[^/]*/\).*|\1|g' #2楼 基本的或扩展的Posix / GNU正则表达式都不能识别非贪婪的量词; 您需要稍后的正则表达式。 幸运的是,在这种情况下,Perl正则表达式非常容易获得: perl -pe 's|(http://.*?/).*|\1|' #3楼 sed 's|(http:\/\/[^\/]+\/).*|\1|' #4楼 不使用正则表达式的另一种方法是使用字段/定界符方法,例如 string="http://www.suepearson.co.uk/product/174/71/3816/" echo

arm linux 移植 QT5.9 带 tslib,QT-creator配置

那年仲夏 提交于 2020-02-26 11:59:55
原文地址: https://www.cnblogs.com/schips/p/11089135.html 平台 : Ubuntu 16.04 QT : 5.9.8 tslib : 1.4 arm-gcc : 4.8.1 ( > 4.8 ) 主机准备: 一个脚本做完所有的事情 ## # Copyright By Schips, All Rights Reserved # https://gitee.com/schips/ # File Name: make_QT5.9.sh # Created : Fri 22 Nov 2019 11:49:30 AM CST ## #!/bin/sh BASE=`pwd` BUILD_HOST=arm-hisiv500-linux XPLATFORM=linux-diy-arm-g++ OUTPUT=${BASE}/install/ make_dirs() { cd ${BASE} mkdir compressed install source -p } setup_env () { sudo apt-get install autoconf automake autogen libtool libsysfs-dev -y } download_package () { cd ${BASE}/compressed #下载包 wget -c

VM VirtualBox 使用Euleros 虚拟机

若如初见. 提交于 2020-02-26 08:19:09
一、VM VirtualBox安装不在详述: 下载地址: https://www.virtualbox.org/wiki/Downloads 二、下载Euleros镜像: 下载地址: https://developer.huawei.com/ict/site-euleros/euleros/repo/yum/2.5/os/x86_64/iso/2019330/ 三、安装虚拟机: 1、存储为vmdk,分割为2GB大小,为60GB 2、启用网卡2,类型为“仅主机(host-only)网络” 3、挂载iso 4、开始安装: (1)网络打开,enp0s8 设置为192.168.56.112 (2)主机名为self-work (3)软件选择“带GUI的服务器”,并选中“开发工具" 四、设置虚拟机: 1、优化ssh: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sed -i '/^#Port 22/a\Port 44522' /etc/ssh/sshd_config sed -i 's/^#Port 22/Port 22/g' /etc/ssh/sshd_config sed -i 's/^#ListenAddress 0.0.0.0/ListenAddress 0.0.0.0/g' /etc/ssh/sshd_config sed -i

sed

本秂侑毒 提交于 2020-02-26 02:07:56
sed '/^$/d' file 删除空白行显示 (原文件不动) sed '1,10d' file 删除1到10行显示 (原文件不动) sed 's/root/&super/p' file 在root后追加super 打印输出(原文件不动) sed 's/root/&super/g' file 在所有root后追加super 打印输出(原文件不动) [root@bogon data]$var=root 特殊用法 [root@bogon data]$sed 's/'''$var'''/zhonghua123/' /etc/passwd ''' $var''' 在sed引用变量是用6个单引号括起来。特殊用法 结果 zhonghua123:x:0:0:root:/root:/bin/bash [root@bogon data]$sed 's/'''$var'''/zhonghua123/g' /etc/passwd [root@bogon data]$sed 's/'''$var'''/&123/g' /etc/passwd root123:x:0:0:root123:/root123:/bin/bash [root@bogon Packages]$ls *.rpm|rev|cut -d. -f2|rev|sort|uniq -c --分类查看 比较好的组合 2258 i686 3122