如果最后5个字符串与特定输入匹配,我需要打印第一个字符串。
示例:指定的输入为2
India;1;2;3;4;5;6
Japan;1;2;2;2;2;2
China;2;2;2;2
England;2;2;2;2;2
预期产出:
Japan
England
如您所见,China
被排除在外,因为它不符合要求(最后5位必须与输入匹配)。
答案 0 :(得分:2)
grep ';2;2;2;2;2$' file | cut -d';' -f1
$
代表"行结束",因此grep将打印以给定字符串结尾的所有行-d';'
告诉cut以分号分隔列-f1
输出第一列答案 1 :(得分:0)
使用sed:
sed -n 's/^\([^;]*\).*;2;2;2;2;2$/\1/p' file
它以;
;2;2;2;2;2
个第一个字符
可以使用GNU sed缩短它:
sed -nE 's/^([^;]*).*(;2){5}$/\1/p' file
答案 2 :(得分:0)
您可以使用awk
:
awk -F';' -v v="2" -v count=5 '
{
c=0;
for(i=2;i<=NF;i++){
if($i == v) c++
if(c>=count){print $1;next}
}
}' file
,其中
v
是要匹配的值count
是要打印所需字符串的最大值for
循环正在解析所有以;
分隔的字段,以便找到匹配项此脚本不需要5个值2
连续。
答案 3 :(得分:0)
awk -F\; '/;2;2;2;2;2$/{print $1}' file
Japan
England