我有一个 grep 命令
grep -o 'ITEM+[^ ]*' "file.txt"
返回的字符串是这样的
ITEM+12345678::hashtext_20191030::ITEM+87654321::hashmap_20191030::ITEM+12348765::hashvalue_20191001
所以当我添加剪切命令时,
grep -o 'ITEM+[^ ]*' "file.txt" | cut -c 5-12
我只得到一个结果:
12345678
我如何使结果像这样:
12345678
87654321
12348765
答案1
您grep
只返回一行,[^ ]*
模式匹配12345678::hashtext_20191030::ITEM+…
以及该行的其余部分,直到找到空格字符。如果您只想匹配ITEM+
和 后面的数字,请使用
grep -o 'ITEM+[^:]*' file.txt
或者
grep -o 'ITEM+[0-9]*' file.txt
你会得到多个结果。
你应该得到所有的数字
grep -o 'ITEM+[^:]*' file.txt | cut -c 6-
返回第 6 个字符,直到行尾。