有一个如下数据,我试图取每行的第四个值(由:)分隔为第一个值。 但是,由于第二行中的第一个值也可用,因此它给出了如下问题。
$ cat sample.txt
MSG_KENAN_KBILLDT1:mulconfield:lt,ge,ge,ge,ge,ge:MSG_KENAN_KPAYDDT1 MSG_KENAN_KBILLDT2 MSG_KENAN_KBILLDT3 MSG_KENAN_KBILLDT4 MSG_KENAN_KBILLDT5 MSG_KENAN_KBILLDT6
MSG_KENAN_KBILLDT3:mulconfield:le,ge,ge,ge:MSG_KENAN_KPAYDDT3 MSG_KENAN_KBILLDT4 MSG_KENAN_KBILLDT5 MSG_KENAN_KBILLDT6
$
$ grep MSG_KENAN_KBILLDT3 sample.txt|cut -d: -f4
MSG_KENAN_KPAYDDT1 MSG_KENAN_KBILLDT2 MSG_KENAN_KBILLDT3 MSG_KENAN_KBILLDT4 MSG_KENAN_KBILLDT5 MSG_KENAN_KBILLDT6
MSG_KENAN_KPAYDDT3 MSG_KENAN_KBILLDT4 MSG_KENAN_KBILLDT5 MSG_KENAN_KBILLDT6
$
您也可以在第一行看到MSG_KENAN_KBILLDT3。我只需要在第一个位置有我的搜索字符串的行。
但是我的预期输出是
MSG_KENAN_KPAYDDT3 MSG_KENAN_KBILLDT4 MSG_KENAN_KBILLDT5 MSG_KENAN_KBILLDT6
因为我想在第一个位置根据值(MSG_KENAN_KBILLDT3)获得第四个值。
有人能给我一个解决方案吗?
答案 0 :(得分:1)
如果您想在行首开始使用MSG_KENAN_KBILLDT3,请说明:
grep '^MSG_KENAN_KBILLDT' sample.txt
开头的插入符号^
表示如果以下模式出现在该行的开头,则为
答案 1 :(得分:0)
作为替代方案,您可以尝试使用awk
awk '{ if ($1 == "MSG_KENAN_KBILLDT3") {print $4} }' FS=":" sample.txt