Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 将匹配的字符串显示到行尾_Unix_Awk_Sed_Grep_Cut - Fatal编程技术网

Unix 将匹配的字符串显示到行尾

Unix 将匹配的字符串显示到行尾,unix,awk,sed,grep,cut,Unix,Awk,Sed,Grep,Cut,如何在文件中查找特定字符串并显示匹配的字符串和行的其余部分 例如,我在a.txt中有一行: 此代码在我的代码中提供了ORA-12345。 所以,我找到了字符串“ORA-” 输出应为: ORA-12345在我的代码中 尝试使用grep: grep 'ORA-*' a.txt 但它在输出中给出了整个行 # Create test data: echo "junk ORA-12345 more stuff" > a.tst echo "junk ORB-12345 another stuf

如何在文件中查找特定字符串并显示匹配的字符串和行的其余部分

例如,我在
a.txt
中有一行:

此代码在我的代码中提供了ORA-12345。
所以,我找到了字符串“ORA-”

输出应为:

ORA-12345在我的代码中
尝试使用grep:

grep 'ORA-*' a.txt
但它在输出中给出了整个行

# Create test data:
echo "junk ORA-12345 more stuff" > a.tst
echo "junk ORB-12345 another stuff" >> a.tst
# Actually command:
# the -o (--only-matching) flag will print only the matched result, and not the full line
cat a.tst | grep -o 'ORA-.*$' # ORA-12345 more stuff
正如fedorqui指出的,您可以使用:

grep -o 'ORA-.*$' a.tst

awk中的另一个答案:

awk '$0 ~ "ORA" {print substr($0, match($0, "ORA"))}' a.tst
由内而外,情况如下:

match($0,“ORA”)
查找出现在
ORA
行中的位置。在这种情况下,正好是位置17

substr($0,match($0,“ORA”))
然后从位置17返回到行尾

$0~“ORA”
确保上述内容仅适用于包含
ORA
sed

echo "This code gives ORA-12345 in my code." | sed 's/.*ORA-/ORA-/'

使用
grep
-
grep-o-E'ORA-[0-9]+'
。使用
sed
-
sed-n's/.*\(ORA-[0-9]*\).$/\1/p'
/ORA/
$0~“ORA”
不是一样的吗?这可以简化为:
i=index($0,ORA){print substr($0,i)}
@dev null,是的,afaik.note
cat文件
是不必要的,你可以直接说
grep。。。文件