我有一个看起来像这样的输入文件,我希望第一次出现单词,但仅在第一次出现特殊单词之后
编辑:我意识到字符串中带有/的问题很重要
words/and/stuff #1
words/more #2
some/other/words #3
special/this #1
words/i/need/you/i.really.need.you #4
special/cool #2
words/random #5
在我发现“特殊”的第一次出现之后,我试图找到“单词”的第一次出现
输出应为
words/i/need/you/i.really.need.you #4
我尝试了以下
grep -m1 special file | grep -m1 words file
awk 'NR==1,/special/ && NR==1,/words/ {print $0}' file
答案 0 :(得分:1)
尝试:
$ awk '/special/{f=1} f && /words/ {print; exit}' file
words/i/need/you/i.really.need.you #4
工作原理:
/special/{f=1}
如果当前行与special
相匹配,则将变量f
设置为1
f && /words/ {print; exit}
如果f
非零且当前行与words
匹配,则打印当前行并退出。
如果您要匹配的单词不仅被斜杠包围,而且包括斜杠,则相同的代码也有效。只是有必要逃脱斜线。例如,如果我们要在words/i/need
之后寻找special
一词,
$ awk '/special/{f=1} f && /words\/i\/need/ {print; exit}' file
words/i/need/you/i.really.need.you #4
答案 1 :(得分:0)
$arrColFields= array();
$arrColFields["lngCngSecUserId"] = 0;
$arrColFields["sdtHolidayDate"] = 1;
$tblActualHoliday["ColHeader"] = $arrColFields;
?>
脚本您可以为此使用sed
sed
将从您的样本中输出:
sed -e '/special/,${ /word/q;d };d' file
从包含 words #4
的行到输入结尾,
special
,则退出否则,删除行。
word
答案 2 :(得分:0)
请您尝试以下。
awk '
$0=="words"{
count++
if(special_count==1){
print "String words count is: "count
exit
}
}
/special/{
special_count++
}
' Input_file