*Bash:字符串替换。

我们在编写bash脚本的时候,经常需要替换掉字符窗中特殊的字符,我们看看有几种方法可以实现。

  1. 最常用的方法是使用sed命令。例如

    [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed "s/\//\\\\\//g"
    This is a \/ and you will know \/

    但是相当复杂,应为在替换部分要使用双反斜杠,"\\\\\/",而不是"\\\/",为什么呢?应为在escape"\“的时候,必须要使用"\\",而不是对待"/"的"\/"。例如

    [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed -s "s/\//\//g"
    This is a / and you will know /
    [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed -s "s/\//\\\\/g"
    This is a \ and you will know [[email protected] test]$ a="This is a / and you will know /" ; echo "$a" | sed -s "s/\//\\/g"
    sed: -e expression #1, char 8: unterminated `s‘ command
  2. 那么,第二种方法是什么呢?使用${}这个符号,例如:

    [[email protected] test]$ a="This is a / and you will know /" ; echo ${a//\//\\}
    This is a \ and you will know [[email protected] test]$ a="This is a / and you will know /" ; echo ${a//\//\\\/}
    This is a \/ and you will know \/

    这里,我们不再需要使用"\\"了,而是正常的使用正则表达式。所以,第二种方法,最为方便。如果使用expr substr,则会把问题复杂化。dan

  3. 但是,如果要同时替换多个不同位置的字符串,例如"/", "\", "?",等,要在他们前面都加上反斜杠,则只能使用sed了,因为第二次的echo,会把第一次添加的“\"取消掉。使用sed,用-e,或者"{;}"来操作。

    [[email protected] test]$ str="asdasdf / asdfasdf / asdf,adf" ; echo $str | sed "{s/\//\\\\\//g;s/,/:/g}"
    asdasdf \/ asdfasdf \/ asdf:adf

资料:

http://www.cnblogs.com/frydsh/p/3261012.html

时间: 2024-11-10 04:06:14

*Bash:字符串替换。的相关文章

马哥笔记第十六天故障排除、trap、sed、awk、bash数组、bash字符串操作

A.故障排除:             紧急救援模式:rescue,相当于一个小型的linux系统和让你切换到硬盘系统中. 1.grub损坏:                         谨慎操作 dd  if=/dev/zero of=/dev/sda count=1 bs=400   不能大于446,否则破坏分区表中数据.这时需要进入救援模式,选择Rescue installed system,选择语言.键盘设置.是否启用网络.继续continue.选择启动shell.使用chroot

bash 字符串处理

获取字符串长度 %x="abcd" #方法一 %expr length $x 4 # 方法二 %echo ${#x} 4 # 方法三 %expr "$x" : ".*" 4 # expr 的帮助 # STRING : REGEXP   anchored pattern match of REGEXP in STRING 查找子串 %expr index  $x "b" 2 %expr index  $x "a&quo

Day04 字符串截取&字符串初值&数组&字符串替换

一.字符串截取 ":"代表截取 1.1 ${var:起始位置:长度} 起始位置从0开始(为0可以省略)x=13918581996echo ${x::5}#只取前5位数字13918 1.2 expr substr "$var" 起始位置 长度 起始位置从1开始x=13918581996expr substr "$x" 1 513918 1.3 cut -b 起始位置-结束位置 按照顺序截取,起始位置从1开始echo $x|cut -b 1-5139

nyoj 113 字符串替换 (string中替换函数replace()和查找函数find())

字符串替换 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 输出 对于输入的每一行,输出替换后的字符串 样例输入 you are what you do 样例输出 we are what we do读一行的方法:用geiline(cin,s) 1 #include <iostream>

Bash 字符串处理命令

字符串长度 str="abc" echo ${#str} 查找子串的位置 str="abc" str1=`expr index $str "a"` echo $str1 选取子串 str="abc" str1=`expr substr $str 1 2` echo $str1 str="abcdef" echo ${str:2} # 从第二个位置开始提取字符串, bcdef echo ${str:2:3}

python文件操作--字符串替换

如把test.txt文件的 所有 AAA 字符串 替换成 aaaaa 1 with open('test.txt','+r') as f: 2 t = f.read() 3 t = d.replace('AAA', 'aaaaaa') 4 #读写偏移位置移到最开始处 5 f.seek(0, 0) 6 f.write(t)

str_replace字符串替换

字符串替换, src 源字符串, buf_size 缓冲大小, search搜索的字符串大小, repstr 需要替换成的字符串 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

【java解惑】java字符串替换方法使用

    如下代码: public class Example020 { public static void main(String[] args) { String separator = File.separator; String clazzName = Example020.class.getName(); String rs1 = clazzName.replace(".", separator); // 方法1 String rs2 = clazzName.replaceA

批处理命令:带参数的字符串替换

批处理命令:带参数的字符串替换 @echo off setlocal enabledelayedexpansion set main_str=hello world set src=hello set dst=hi echo %main_str% set sub_str=!main_str:%src%=%dst%! echo %sub_str%

poj 3981 字符串替换

字符串替换 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10871   Accepted: 5100 Description 编写一个C程序实现将字符串中的所有"you"替换成"we" Input 输入包含多行数据 每行数据是一个字符串,长度不超过1000 数据以EOF结束 Output 对于输入的每一行,输出替换后的字符串 Sample Input you are what you do