我有一个多行文件,文本没有空格。
Thereisacat;whichisverycute.Thereisadog;whichisverycute.
Thereisacat;whichisverycute.Thereisadog;whichisverycute.
我想提取cat和cute之间的字符串(第一次出现不是第二次出现),即输出是
;whichisvery
;whichisvery
我快要得到它了,但是我最终还是用here的命令从猫到最后一个可爱的人弄来了。
sed -e 's/.*cat\(.*\)cute.*/\1/'
我得到
;whichisverycute.Thereisadog;whichisvery
;whichisverycute.Thereisadog;whichisvery
如何将猫的文字显示为可爱而不是最后的可爱?
答案 0 :(得分:5)
编辑: :自从我投下赞成票以来,我已经在awk
中给出了解决方案,我不明白为什么。因此,请在sed
中添加解决方案(尝试删除否决票)。
sed 's/cute.*//;s/.*cat//' Input_file
能否请您尝试以下操作,如果有帮助,请告诉我。
awk '{sub(/cute.*/,"");sub(/^.*cat/,"");print}' Input_file
答案 1 :(得分:2)
鉴于您发布的输入内容是:
$ awk -F'cat|cute' '{print $2}' file
;whichisvery
;whichisvery