显示文本文件,每行在给定字符处停止
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
我有一个包含法语单词的文本文件,这里是一个例子:
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