我有一个如下所示的数据集:
电影(年)类型
例如。
我的目标是获取每个“电影”字段,然后检查另一个也有一堆电影的文件,并删除第二个文件中不包含电影的行。 我一直在尝试使用awk来做到这一点,但只能匹配年份字段。有没有办法可以为电影领域创建变量?我觉得最简单的方法是匹配年份字段,并从每行中的所有内容创建一个变量。我无法解决这个问题,有没有办法做到这一点可能比我的建议更容易?
答案 0 :(得分:3)
假设您的数据集在文件中
$ cat dataset
Terminator (19XX) action
The Ghostrider (2009) supernatural
$ awk -F"[()]" '{print $1}' dataset
Terminator
The Ghostrider
$ awk -F"[()]" '{print $1}' dataset > movie_names
$ grep -f movie_names secondfile
$ grep -f secondfile movie_names
当然,你也可以只使用awk
awk -F"[()]" 'FNR==NR { m[++d]=$1;next } { for(i=1;i<=d;i++){if( $0 ~ m[i] ){ print }}}' dataset secondfile
答案 1 :(得分:0)
您可以要求sed
删除年份字段及其后的所有内容。
$ cat file | sed 's/([0-9]\+).*//'
这只会返回每行电影的名称。然后,您可以将其传输到while read;
循环。
如果需要,您可以优化正则表达式,使其仅匹配4位数(此位数将匹配parens之间的任意位数)。