Regex 如何编写脚本或shell命令以在perl中使用正则表达式?

Regex 如何编写脚本或shell命令以在perl中使用正则表达式?,regex,perl,bash,shell,Regex,Perl,Bash,Shell,我是电脑爱好者,但从未学过编程 我试图学习Perl,因为我发现它很有趣,因为我学会了使用一点Perl风格的正则表达式,因为我需要替换字符串中某些部分的单词,这就是我发现Perl的原因 但我对编程一无所知,我想知道一些简单的例子,如何使用shell(终端)或基本脚本中的正则表达式 例如,如果我的文件夹中有一个名为:input.txt的文本文档 如何执行以下正则表达式 要匹配的文本: text text text text text text 我想要的是:更改单词文本的第二个匹配项 (\A.*?t

我是电脑爱好者,但从未学过编程

我试图学习Perl,因为我发现它很有趣,因为我学会了使用一点Perl风格的正则表达式,因为我需要替换字符串中某些部分的单词,这就是我发现Perl的原因

但我对编程一无所知,我想知道一些简单的例子,如何使用shell(终端)或基本脚本中的正则表达式

例如,如果我的文件夹中有一个名为:input.txt的文本文档 如何执行以下正则表达式

要匹配的文本:

text text text
text text text
我想要的是:更改单词文本的第二个匹配项

(\A.*?tex.*?)text(.*?)$
替换为:
\1已更改\3

预期结果:

text changed text
text changed text
使用将使用多行和全局修改器的文本编辑器。 现在,我如何从shell处理这个。 CD路径,然后是什么? 还是剧本?应该包含哪些内容以使其可行


请考虑我对Perl一无所知,但只知道它的ReXEP语法

正则表达式部分是容易的。< /P>

 s/\btext\b.*?\K\btext\b/changed/;
但是,如果您正在学习perl,如何应用它。。。这是最难的部分。我们可以演示一行程序,但这并没有多大帮助

perl -i -pe 's/\btext\b.*?\K\btext\b/changed/;' file.txt
因此,我建议你看看。最终,您需要学习的是如何打开一个文件进行读取,并遍历这些行。或者,如何打开文件进行写入。有了这两个工具,您可以做很多事情

use strict;
use warnings;
use autodie;

my $file = 'blah.txt';
my $newfile = 'new_blah.txt';

open my $infh, '<', $file;
open my $outfh, '>', $newfile;

while (my $line = <$infh>) {
    # Any manipulation to $line here, such as that regex:
    # $line =~ s/\btext\b.*?\K\btext\b/changed/;

    print $outfh $line;
}

close $infh;
close $outfh;

正则表达式部分很简单

 s/\btext\b.*?\K\btext\b/changed/;
但是,如果您正在学习perl,如何应用它。。。这是最难的部分。我们可以演示一行程序,但这并没有多大帮助

perl -i -pe 's/\btext\b.*?\K\btext\b/changed/;' file.txt
因此,我建议你看看。最终,您需要学习的是如何打开一个文件进行读取,并遍历这些行。或者,如何打开文件进行写入。有了这两个工具,您可以做很多事情

use strict;
use warnings;
use autodie;

my $file = 'blah.txt';
my $newfile = 'new_blah.txt';

open my $infh, '<', $file;
open my $outfh, '>', $newfile;

while (my $line = <$infh>) {
    # Any manipulation to $line here, such as that regex:
    # $line =~ s/\btext\b.*?\K\btext\b/changed/;

    print $outfh $line;
}

close $infh;
close $outfh;

正则表达式部分很简单

 s/\btext\b.*?\K\btext\b/changed/;
但是,如果您正在学习perl,如何应用它。。。这是最难的部分。我们可以演示一行程序,但这并没有多大帮助

perl -i -pe 's/\btext\b.*?\K\btext\b/changed/;' file.txt
因此,我建议你看看。最终,您需要学习的是如何打开一个文件进行读取,并遍历这些行。或者,如何打开文件进行写入。有了这两个工具,您可以做很多事情

use strict;
use warnings;
use autodie;

my $file = 'blah.txt';
my $newfile = 'new_blah.txt';

open my $infh, '<', $file;
open my $outfh, '>', $newfile;

while (my $line = <$infh>) {
    # Any manipulation to $line here, such as that regex:
    # $line =~ s/\btext\b.*?\K\btext\b/changed/;

    print $outfh $line;
}

close $infh;
close $outfh;

正则表达式部分很简单

 s/\btext\b.*?\K\btext\b/changed/;
但是,如果您正在学习perl,如何应用它。。。这是最难的部分。我们可以演示一行程序,但这并没有多大帮助

perl -i -pe 's/\btext\b.*?\K\btext\b/changed/;' file.txt
因此,我建议你看看。最终,您需要学习的是如何打开一个文件进行读取,并遍历这些行。或者,如何打开文件进行写入。有了这两个工具,您可以做很多事情

use strict;
use warnings;
use autodie;

my $file = 'blah.txt';
my $newfile = 'new_blah.txt';

open my $infh, '<', $file;
open my $outfh, '>', $newfile;

while (my $line = <$infh>) {
    # Any manipulation to $line here, such as that regex:
    # $line =~ s/\btext\b.*?\K\btext\b/changed/;

    print $outfh $line;
}

close $infh;
close $outfh;

试图学习Perl是很困难的,您提供的链接似乎是假定人们以前对Perl有过了解。谢谢你的回答。为什么要使用边界?^或\a和$/\r\n是否也被认为是单词边界?最终,你对编程语言的知识只会作为你的参考资料的质量以及你对它的熟悉程度而变得很好。老实说,有太多的细节和边缘案例让大多数人记不住关于一门语言的所有信息,所以实际上更重要的是知道在哪里查找信息。我建议买一本或一本书,并采取这种正式的方法。最终,你会变得更加熟悉,知道去哪里看,但我同意这对初学者来说并不好。也许其他人会建议另一个资源。谢谢,我在脚本上粘贴了regexp,并将其命名为1.pl,然后运行它,但返回:我添加了这个:while(my$line='s/\btext\b.*?\K\btext\b/changed/;'){并返回:1.pl第11行“$infh>全局符号“$line”附近的语法错误在1.pl第14行需要显式的包名。由于编译错误,1.pl的执行被中止。我有一个文档调用输入,使用shell的脚本1.pl给出了这个结果,您能帮助我吗?尝试学习Perl很困难,您提供的链接似乎假设人们以前对Perl有过了解。感谢answe为什么你使用边界?^还是\ a和$/r?n也被认为是词的边界?最终,你对编程语言的知识只会作为你的参考资料的质量以及你对它的熟悉程度而变得很好。老实说,对于大多数人来说,有太多的细节和边缘情况能记住所有关于A的东西。语言,所以知道在哪里查找信息实际上更重要。我建议你买一本或一本书,并采取这种正式的方法。最终,你会更加熟悉并知道在哪里查找信息,但我同意这对初学者不太好。也许其他人会建议其他资源。谢谢,我将regexp粘贴到脚本上,我将其命名为1.pl并运行它,但返回:我添加了:while(my$line='s/\btext\b.*?\K\btext\b/changed/;'){并返回:1.pl第11行“$infh>全局符号“$line”附近的语法错误在1.pl第14行需要显式的包名。由于编译错误,1.pl的执行被中止。我有一个文档调用输入,使用shell的脚本1.pl给出了这个结果,您能帮助我吗?尝试学习Perl很困难,您提供的链接似乎假设人们以前对Perl有过了解。感谢answe为什么你使用边界?^还是\ a和$/r?n也被认为是词的边界?最终,你对编程语言的知识只会作为你的参考资料的质量以及你对它的熟悉程度而变得很好。老实说,对于大多数人来说,有太多的细节和边缘情况能记住所有关于A的东西。语言,所以一个人知道在哪里寻找信息实际上更重要。我建议找一个