精华内容
下载资源
问答
  • Sed命令中含有转义字符解决方法

    千次阅读 2017-09-29 13:25:05
    Sed命令中含有转义字符解决方法 (2015-11-25 10:57:09)转载▼分类: Linux在sed命令中有许多字符都被转义,比如\ , $, ^,单双引号还有点号等等,因此使用sed命令进行字符串匹配和修改时候,字符串中如果...

    Sed命令中含有转义字符的解决方法

    http://blog.sina.com.cn/s/blog_6561ca8c0102we0p.html

    Sed命令中含有转义字符的解决方法 (2015-11-25 10:57:09)转载▼分类: Linux在sed命令中有许多的字符都被转义,比如\ , $, ^,单双引号还有点号等等,因此使用sed命令进行字符串的匹配和修改的时候,字符串中如果含有转义字符,很多情况下不能直接用字符本身表示。这时候可以使用反斜杠加上转义字符的方法来输出含转义字符的字符串,但这一方法并不是对所有的转义字符都有用,过程也较复杂。下面一一说明:一般而言sed命令格式由三部分组成,sed + 功能选项 + 条件选项,功能选项由连接符号-加上代表不同功能的字母构成,条件选项表明对文本的筛选和处理条件,一般括在单引号或者双引号中。但两种引号在sed命令处理的过程中略有不同:单引号:对其中的内容不做任何处理,即引号内的内容是sed命令定义的格式,对于在条件选项中使用的转义字符需要使用反斜杠加转义字符才能输出。例如:若定义变量 temp=/home/test/, var=aa>echo $temp | sed 's/\//$var/g'输出结果为:$varhome$vartest$var你可能会发现并不是所有的转义字符都需要加反斜杠来输入(如上例中的$符号),这取决于转义字符在条件选项中的位置,如果在这个位置字符本身转义起作用,则需要加反斜杠。即sed命令先检查字符转义功能是否成立,若有转义功能则使用转义功能,否则按字符输出。如果你想要输出该字符时不确定该字符是否会转义,可以对所有位置添加反斜杠。双引号:会对其中的变量进行直接转换,同样是上例,如果写成:>echo $temp | sed “s/\//$var/g”则输出结果为:aahomeaatestaa可以看出双引号将变量名直接替换成变量内容。要想使用单引号得到上面双引号的输出结果也是可以做到的,这时候需要对变量名加单引号来处理:>echo $temp | sed 's/\//'$var'/g'同样可以得到输出结果为:aahomeaatestaa对于sed命令,如上例单引号命令>echo $temp | sed 's/\//$var/g' 中,我们对斜杠符号的输出加上了反斜杠,以免被sed命令视为转义字符功能。我们还可以采用另一种方法无需使用加反斜杠来输出斜杠字符。在这个命令中,分隔符使用了斜杠(/),因此斜杠默认转义,sed中是可以使用其他符号作为分隔符的,如果不使用斜杠作为分隔符,则斜杠默认无转义功能,这时就不需要借助反斜杠来输出了:>echo $temp | sed 's#/#'$var'#g'这里我们使用#来代替/当分隔符,因此/不再具有转义功能,无需再加反斜杠来辨识。同样可以得到上面的输出效果。分隔符对单引号和双引号作用一样。若字符串中含有单引号,有的时候会发现加反斜杠还是得不到想要的字符串输出。比较简单的一个做法是字符串中有单引号时,功能选项部分用双引号括起来,这样不用加反斜杠可以直接输出字符。例如:>echo $temp | sed "s#/#'#g"输出结果为:'home'test'同理上例如果写成:>echo $temp | sed 's#/#\'#g',则会报错。因为单引号需要成对出现,否则sed命令无法知道第一个单引号究竟与第二个还是第三个单引号匹配。若字符串中含有双引号时,功能选项部分用单引号括起来,也可以不使用反斜杠来输出双引号。>echo $temp | sed 's#/#"#g'输出结果为:"home"test"但是,与单引号不同的是,上例如果写成:>echo $temp | sed "s#/#\"#g",却不会报错。这也就很好的解决了如果字符串中同时有单双引号的时候该如何处理的问题。在更加复杂的文本情况中,sed命令中的转义字符还有许多问题需要注意,需要根据具体情况采取不同的输出方法来解决问题。

    展开全文
  • 今天下午按照《shell脚本编程指南》这本书在练习时候,做到30页echo命令这里。我发现使用echo进行转义怎么都不成功。明明书里写: \a 警示字符 \b 退格 \c 忽略输出最后换行符号。这个参数之后...

    开始学习shell脚本编程了。今天下午按照《shell脚本编程指南》这本书在练习的时候的,做到的30页echo命令这里。我发现使用echo进行转义怎么都不成功。明明书里写的:

    \a      警示字符

    \b      退格

    \c      忽略输出中最后的换行符号。这个参数之后的任何字符,包括后面的参数都会被忽略掉。

    \f      清除屏幕

    \n      换行

    \r      回车

    \t      水平制表符号

    \v      垂直制表符号

    \\      反斜杠字符

    \0ddd   将字符表示为1到3位的八进制数值

    但是我按照书里面操作的时候,都会出现如下的错误。

    转义符号被原样输出了。并没有被转义成应有的特殊模式。

    于是按照老师交给我们的排错方法,首先查看echo的命令的帮助。果然发现了问题所在,在echo命令的帮助中,写到默认禁止反斜杠功能。如果需要开起反斜杠转义功能,需要使用-e的参数。

    按照帮助文档的说明我们再试一下,发现输出结果正常了。

    由于linux的发行版本众多,每个发行版本里面集成的工具版本也各不相同,同一个命令的使用方法因操作系统的版本不同或多或少可能都有些区别。在实际工作中,我们除了看书,看资料以外,还应该多利用linux的帮助系统,获取最正确的帮助信息,帮助我们处理发现的问题。

    展开全文
  •  这个命令比较简单,就是把/tmp/1文件包含空格行列出来。   如果我们想先ssh到某台机器上再运行这个shell命令1, 你也许会尝试: ssh 127.0.0.1 grep " " /tmp/1  但是很快你会发现行不通。 ...

    shell命令1

    grep " " /tmp/1

     这个命令比较简单,就是把/tmp/1文件中包含空格的行列出来。

     

    如果我们想先ssh到某台机器上再运行这个shell命令1,

    你也许会尝试:

    ssh 127.0.0.1 grep " " /tmp/1

     但是很快你会发现行不通。

    因为ssh拿到的“ ”之后,两个引号就消失了,

    然后传递给grep运行的时候,直接就是一个空格,也就相当于没有参数了。

     

    正确的写法应该是将两个需要传给grep的引号用附上转义符,如下

    shell命令2

    ssh 127.0.0.1 grep "\" \"" /tmp/1

     

    我们知道grep拿到的参数是“ ”,已经没有转义符了,它就是一个空格,

    我们再来一层,如果ssh到一台机器然后在ssh到另一台机器,执行shell命令1,那将会是怎么样?

    其实也不难,每传递一次参数就会减少一层转义符,

    所以我们要把给第二个ssh的参数中的特殊符号全部转移一遍!

    shell命令3

    ssh 127.0.0.1 ssh 127.0.0.1 grep "\"\\\" \\\"\"" /tmp/1

     

    通过grep监控或查看远端服务器时,可能就会遇到这个问题。

    当然如果不用grep到特殊字符,也不用使用引号将有空格的pattern引起来,可以不用理会这点。

    如果先将参数传给自己写的脚本,然后在执行上面的shell命令,那也同样需要多一层转义。

     

     匹配任意字符.*

    ' ', '-','\', '+'等字符在正则表达式中都要转义

    展开全文
  • linux sed命令正则表达式语法分两种,一种叫Basic (BRE) Syntax,另一种叫Extended (ERE) Syntax。默认使用是BRE。 这个BRE就是一个简化版,语法稍微有点不一样,问号、加号、圆括号、花括号和竖线没有特殊...

    linux sed命令内的正则表达式语法分两种,一种叫Basic (BRE) Syntax,另一种叫Extended (ERE) Syntax。默认使用的是BRE。

    这个BRE就是一个简化版,语法稍微有点不一样,问号、加号、圆括号、花括号和竖线没有特殊含义,就代表字符本身,如果要原本定义的实现特殊含义,需要用反斜杠(\)转义……详情请见:

    https://www.gnu.org/software/sed/manual/html_node/BRE-vs-ERE.html#BRE-vs-ERE

    转载于:https://www.cnblogs.com/hejing195/p/7593960.html

    展开全文
  • 我们想对一类文件批量操作,例如批量查看硬盘文件属性,那么正常命令会是: [root@linuxprobe ~]# ls /dev/sda [root@linuxprobe ~]# ls /dev/sda1 [root@linuxprobe ~]# ls /dev/sda2 [root@linuxprobe ~]# ls /...
  • 替换:如果表达式含有特殊字符,shell会进行替换。例如在双引号使用变量就是一种替换...#-e表示对转义字符替换,不加话输出如下# echo "Value of a is ${a} \n" 转义字符替换 下列转义字符可用于echo ...
  • linux中4种常用的转义

    千次阅读 2019-09-18 07:23:33
    //学习笔记反斜杠(\):是反斜杠后面一个变量变为单纯字符串。单引号(”):转义其中所有变量为单纯字符串。双引号(””):保留其中变量属性,不进行转义...反引号(“):把其中的命令执行后返回结果。...
  • [abc] 匹配a、b、c三个字符中的任意一个字符 转义字符: (\):使反斜杠后面的一个变量变为单纯的字符串 (’’):转义其中所有的变量为单纯的字符串 (""):保留其中的变量属性,不进行转义处理 (``):把其中...
  • linux中的通配符、元字符、转义

    千次阅读 2015-07-10 15:24:00
    shell命令的构成每条linux命令中的每个character都是以下两种之一: - literal:普通纯文本 - 保留字:通配符、元字符、转义字符通配符通配符是由shell处理的(不是由所涉及到命令语句处理的,其实我们在shell各
  • 一、通配符:" * ” 、" ? ”  和DOS下一样,当我们不知道确切文件名时,可以用通配符来进行模糊操作。“*”可以代表任意长度...二、转义字符:" \ ”  和DOS命名规则不同是,通配符" * ”、" ? ”是可以
  • 符号 用途 转义 * 通配符 \* "目录名" # shell注释符 \# "目录名" &... 后台执行程序命令 ... shell中的命令组、变量包裹符、数组 \( "目录名" ) sh...
  • 2、 grep:用于在文本执行关键词搜索,并显示匹配结果 (1)grep -v:反向选择 (2)grep -n:显示行号 (3)grep -i:忽略大小写 3、 find:用于按照指定条件来查找文件 (2)find -perm:根据文件权限来查找...
  • 如果表达式包含特殊字符,Shell 将会进行替换。例如,在双引号使用变量就是一种替换,转义字符也是一种替换。 ...下面的转义字符都可以用在 echo : 转义字符 含义 \\ 反斜杠 \..
  • 原文地址:yi_yuan_1988] ...一、通配符:" * ” 、" ?... 和dos下一样,当我们不知道确切文件名时,可以用通配符来进行模糊操作。“*”可以代表任意长度任意字符,“?... 如果要操作文件名包含有这些
  • 让大家对shell编程基础知识及在Linux shell执行命令过程有个初步了解。Shell经常使用通配符,通配符是由shell处理,而不是具体命令处理,其用法类似正则表达式,但是不同于正则表达式。Shell元字符是指有...
  • Linux命令中的常用符号解释(zz)

    千次阅读 2013-12-07 17:30:09
    一、通配符:" * ” 、" ? ”  和DOS下一样,当我们不知道确切文件名时,可以用通配符来进行模糊... 如果要操作文件名包含有这些特殊符号,我们可以结合“\”来表达。下面是通配符和正则表达式一个简短列
  • ​在我们渗透测试过程,当拿到普通用户shell后,可能会因为各种各样权限限制,导致无法进行更多操作,这个时候我们就要想办法进行提权。收集环境信息一旦我们拿到了受限制shell,第一步是尽可能多地收集...
  • linux命令格式

    2020-06-16 08:38:51
    linux命令行 基本 格式 command [options] [args] 解释为中文:命令 [选项、参数] 目标(要操作文件或目录) ...例如 echo \a 这个相当于 echo -E \a 这个命令会将转义功能斜杠 取消 长格式:command --选
  • 前言 对于初学者来说,掌握一些基本命令的常用用法是必须。...使用-e选项时,如果在字符串键入以下字符,程序不会将之当成一般字符串输出,而是会使用其转义功能:  • \a 发出警告声;  • \b 删除前一个字符
  • 转义字符,学习过C语言童鞋都知道,著名printf函数支持一些控制字符输出,例如\t 、\n等。我们通常称它们为转义字符。一、转义序列是什么?1、维基百科(译者怕翻译偏差大,保留原文) In computing, ANSI ...
  • 转义字符是C语言表示字符一种特殊形式。通常使用转义字符表示ASCII码字符集中不可打印控制字符和特定功能字符...系统有些命令特别复杂,特别是那些部属在Linux/Unix操作系统上的命令。如expdp是Oracle数据...
  • Linux系统Shell脚本中的echo命令

    千次阅读 2019-04-16 16:54:41
    Linux系统Shell脚本中的echo命令 echo的作用 输出字符串 格式 echo "字符串内容" 一,显示转义字符 转义字符的格式 \进行转义的操作 例如\* \" 常见的转义字符 特殊符号以外的转义,需要加上-e去开启...
  • Linux命令之echo命令

    千次阅读 2019-05-27 11:32:55
    linux的echo命令,在shell编程极为常用, 在终端下打印变量value时候也是常常用到,因此有必要了解下echo用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示作用。 语法 echo(选项)(参数) 选项...
  • --《瓦尔登湖》前言我们都知道,在linux删除一个文件可以使用rm命令,但是有一些特殊名称文件使用普通rm方式却没法删除,本文介绍linux中删除特殊名称文件多种方式。linux文件命名规则在介绍之前,简单说明...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 563
精华内容 225
关键字:

linux命令中的转义

linux 订阅