0

我有一个文件

**data2.l**
I have a car 
its nissan GTR 
this car is super fast

如果我想从这个文件中删除“汽车”这个词,我只是使用

perl -p -i -e "s/car//ig" data2.l

但是,如果我想保留“car”并删除“car”以外的所有其他术语如果我尝试只提取“car”,我就可以提取包含“car”的完整行。

**example O/P**
car
car

那么这个单线可以稍微修改一下来完成这个任务吗?

4

3 回答 3

3

如果单词“car”在每一行出现多次,这将打印两次,并添加一个换行符结尾:

grep -io "car" file.txt

输入:

i have a car 
its nissan GTR 
this car is super fast Car

输出:

car
car
Car

更新:

grep -ioP "car[^ ]*" file.txt

输入:

i have a car 
its nissan GTR 
this car123 is super fast Car

输出:

car
car123
Car
于 2012-09-19T02:36:24.763 回答
2

这个 Perl 做了类似的事情,但是同一行上的所有“汽车”都保持在同一行上:

  perl -lne 'print join " ", /car\S*/ig if /car/i'

您可以从 steve 的示例中获得以下输出:

car
car123 Car
于 2012-09-19T02:46:40.580 回答
0

我对此感到很开心。所有这些选项只会打印 car 一次,即使它在文件中出现多次。

more data2.1 | grep -q 'car' && echo 'car'

more dara2.1 | sed -n 'h;N;$x;$s/.*car.*/car/p'

perl -ne '$i=1 if ~~/car/}{print "car\n" if $i' data2.1
于 2012-09-19T12:54:23.770 回答