我有一个文件,其中每一行都包含一个句子,其中在字符 > 和 < 之间找到一个单词。例如:
Martin went shopping at >Wallmart< and lost his wallet
French food >tastes< great
我正在寻找一个从 shell 运行的命令,该命令将在每一行打印“">”和“<”内的单词。
提前致谢。
答案1
关于什么grep
?
grep -oP "(?<=\>).*(?=<)" file
输出:
Wallmart
tastes
编辑:
遵循 @Toby Speight 评论,并假设 > 和 < 之间只有单词,为了避免在其他上下文中匹配 > 和 <,命令应该是
grep -oP "(?<=\>)\w+(?=<)" file
答案2
为了awk
:
awk -F '[><]' '{print $2}' file
这会将字段分隔符设置为>
or<
并打印第二个字段,即这两个字符之间的内容。
为了sed
:
sed 's|.*>\(.*\)<.*|\1|' file
它使用 () 打印>
和其后的任何内容以及<
和其之前的任何内容之间的内容。
输出
Wallmart
tastes
答案3
我尝试使用下面的命令,效果很好
awk -F ">" '{print $2}' filename| sed "s/<.*//g"
输出
Wallmart
tastes
Python
#!/usr/bin/python
o=open('filename','r')
for i in o:
k=i.split('>')[1].split('<')[0].strip()
print k
输出
Wallmart
tastes
答案4
awk -F ">" '{print $2}' filename| sed "s/<.*//g"
我用过这个,它适用于更长的字符串而不是>
and...<...
awk -F "string1" '{print $2}' filename| sed "s/string2.*//g"