我有一个包含法语单词的文本文件,下面是一个例子:
hackeur -euse (n.m/f.)
huppe (n. f.)
huque (n. f.)
hure (n. f.)
我想显示文件,在检测到模式(
时停止每一行。预期输出为:
hackeur -euse
huppe
huque
hure
我想用命令行来做这件事。可行吗?
使用(
作为字段分隔符的一个awk
想法:
$ awk -F' [(]' '{print $1}' french.dat
hackeur -euse
huppe
huque
hure
还有一些快速肮脏的想法...
cut
:
$ cut -d'(' -f1 french.dat
hackeur -euse
huppe
huque
hure
注意:这将留下一个尾随空白,可以通过其他命令(例如,sed
)将其修剪掉
sed
和捕获组:
$ sed -En 's/^(.*) (.*/1/p' french.dat
hackeur -euse
huppe
huque
hure
注意:这假定出现一次(
这是一个基于 GNU 的解决方案grep
grep -Po '^.*?(?= ()' inputfile
使用awk
,如果需要each line when the pattern
,您可以使用match()
和substr()
函数( is detected
awk 'match($0, /[(]/) {print substr($0, 1,RSTART-1)}' file
hackeur -euse
huppe
huque
hure