我试图抓取"a"之后的一行文本。"直到队伍的最后。我试过:
perl -ne 'print if /A[.] /../R/' test.txt > test2.txt
我认为"R"应该匹配一行的末尾。但是,当行中包含连字符"-"时,输出不会在行尾停止,而是打印下一行,直到连字符停止。
test.txt失败的示例行如下:A. -rw-r-----, -r--------
预期的test2.txt输出是:
-rw-r-----, -r--------
我得到以下错误输出:
-rw-r-----, -r--------B. -rw-r--r--, -r--r--r--C. -rw-r--r--, -r--------D. -rw-r--rw-, -r-----r--E. -rw-------, -r--------: C
perl -nle 'print if /A[.] (.*)/' test.txt > test2.txt
产生与上面提供的命令相同的结果,但是当存在连字符时,输出仍然没有在行尾结束。
我想你在找
perl -nle'print $1 if /A[.] (.*)/'
也可以用
perl -ne'print /A[.] (.*)/s'
或
perl -ne'print if s/^(.*?)A[.] //'
$ cat test.txt
A. -rw-r-----, -r--------
B. -rw-r-----, -r------w-
C. -rw-r-----, -r------x-
A. -rw-r-----, -r------y-
D. -rw-r-----, -r------z-
$ perl -nle'print $1 if /A[.] (.*)/' test.txt
-rw-r-----, -r--------
-rw-r-----, -r------y-
$ perl -ne'print /A[.] (.*)/s' test.txt
-rw-r-----, -r--------
-rw-r-----, -r------y-
$ perl -ne'print if s/^(.*?)A[.] //' test.txt
-rw-r-----, -r--------
-rw-r-----, -r------y-