Zak*_*akS 6 regular-expression gawk
我有一个文件,其中每一行都包含一个句子,其中在字符 > 和 < 之间找到一个单词。例如:
Martin went shopping at >Wallmart< and lost his wallet
French food >tastes< great
Run Code Online (Sandbox Code Playgroud)
我正在寻找从 shell 运行的命令,该命令将为每一行打印 ">" 和 "<" 内的单词。
提前致谢。
sch*_*ity 11
怎么样grep
?
grep -oP "(?<=\>).*(?=<)" file
Run Code Online (Sandbox Code Playgroud)
输出:
Wallmart
tastes
Run Code Online (Sandbox Code Playgroud)
编辑:
遵循@Toby Speight 评论,并假设 > 和 < 之间只有单词,为了避免在其他上下文中匹配 > 和 < 命令应该是
grep -oP "(?<=\>)\w+(?=<)" file
Run Code Online (Sandbox Code Playgroud)
对于awk
:
awk -F '[><]' '{print $2}' file
Run Code Online (Sandbox Code Playgroud)
将字段分隔符设置为>
or<
并打印第二个字段,即这两个字符之间的字段。
对于sed
:
sed 's|.*>\(.*\)<.*|\1|' file
Run Code Online (Sandbox Code Playgroud)
这使用 () 来打印>
它之后的东西和<
它之前的东西和它之前的东西之间的东西。
输出
Wallmart
tastes
Run Code Online (Sandbox Code Playgroud)