'sed' 的解释

'sed' 的解释

我有一个名为 helo.lst 的巨大文本文件,其中每一行都以以下格式开头:

#=GS N4TFW2_FUSC1/96-161      AC N4TFW21

我只对这N4TFW2_FUSC1部分感兴趣。我需要从文本的其余部分中提取这部分并将其应用于整个文本文件。

我发现以下脚本可以工作,但我不知道如何工作。

cat helo.lst | sed 's/^#=GS\s\([A-Z0-9_]*\)\/.*/\1/1' > helo_id.lst

有人可以解释一下之后发生了什么吗s/

例如,据我所知,更改文件中sed 's/Mark/Euro/g' de_currency.txt每次出现的Markwith 。但在我的示例中,脚本看起来比这更复杂。Eurode_currency.txt

答案1

根据 sed 语法:

/原始/替换/1次


分解原来的

^ 行首

#=要搜索的GS字符串

\s 空格

( ) \ 从 ( 中获取含义,如 shell 中使用的那样;() 表示要在替换部分(分组)中替换的变量

[A-Z0-9_] [] 代表一个字符,可以是 A 到 Z、0 到 9、_

* 表示0次或多次

\/ 因为\是从shell中获取它的含义,它代表以“/”结尾的字符串

.* 消耗/匹配其他所有内容直到行尾


分解替代

\1 原始字符串中的第一个字符串正则表达式匹配(变量)(反向引用[分组])


警告:这是 GNU sed 语法。如果在 OS/X 或 *BSD 中,则必须使用 gsed

有关高级示例的 sed 文章链接:

http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/

相关内容