Linux 为什么sed命令中g关键字前有两个正斜杠?

Linux 为什么sed命令中g关键字前有两个正斜杠?,linux,bash,shell,unix,sh,Linux,Bash,Shell,Unix,Sh,有关以下代码: sed "s/ //g" filename 既然这是用来删除空格的,为什么在“g”前面有两个正斜杠呢。原因可能是什么。虽然它工作正常。每个斜杠都是一个标记,但它们之间什么都没有。例如,如果要用下划线替换空格,可以在第二个和第三个斜杠之间放置下划线: sed "s/ /_/g" filename 运行示例: $ echo "foo bar" | sed "s/ /_/g" foo_bar $ echo "foo bar" | sed "s/ //g" foobar 我建议你先

有关以下代码:

sed "s/ //g" filename

既然这是用来删除空格的,为什么在“g”前面有两个正斜杠呢。原因可能是什么。虽然它工作正常。

每个斜杠都是一个标记,但它们之间什么都没有。例如,如果要用下划线替换空格,可以在第二个和第三个斜杠之间放置下划线:

sed "s/ /_/g" filename
运行示例:

$ echo "foo bar" | sed "s/ /_/g"
foo_bar
$ echo "foo bar" | sed "s/ //g"
foobar
我建议你先读一些关于sed的书

长话短说,使用此示例
sed“s/search\u pattern/replace\u string/g”文件名

  • s
    表示搜索和替换
  • search\u pattern
    是要搜索的模式
  • replace\u string
    是要替换的字符串
  • g
    意味着全局应用操作,这意味着保留对所有匹配模式的搜索和替换

因此,
sed“s///g”filename
意味着搜索文件中的所有空格,并将其替换为空字符串

它全局地将行中的空格替换为零-有效地删除了所有空格。操作或命令是
s/../../
(替换)命令;
g
是一个修饰符(意思是在找到每个模式后重复搜索,从替换文本的末尾开始)。搜索模式(空白)介于第一个和第二个斜线之间;替换模式(空字符串)介于第二个和第三个斜杠之间。
tr-d'
也是一个选项。