显示文本文件,每行在给定字符处停止

Display text file stopping each line at a given character

我有一个包含法语单词的文本文件,这里是一个例子:

hackeur -euse (n.m/f.)
huppe (n. f.) 
huque (n. f.) 
hure (n. f.)

我想显示文件,在检测到模式 ( 时停止每一行。预期输出为:

hackeur -euse
huppe
huque
hure

我想用命令行来做。可行吗?

一个 awk 使用 ( 作为字段分隔符的想法:

$ awk -F' [(]' '{print }' french.dat
hackeur -euse
huppe
huque
hure

几个更快速的想法...

cut:

$ cut -d'(' -f1 french.dat
hackeur -euse
huppe
huque
hure

注意: 这将留下尾随空白,可以通过其他命令(例如,sed

将其删除

sed 和一个捕获组:

$ sed -En 's/^(.*) \(.*//p' french.dat
hackeur -euse
huppe
huque
hure

注意: 这假定出现一次 (

这是一个基于GNU的解决方案grep

grep -Po '^.*?(?= \()' inputfile

对于 awk 你可以使用 match()substr() 函数,如果你想要 each line when the pattern ( is detected

awk 'match([=10=], /[(]/) {print substr([=10=], 1,RSTART-1)}' file
hackeur -euse
huppe
huque
hure