我试图在" 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
产生与上面提供的命令相同的结果,但是当连字符存在时,输出仍然没有在行尾结束。
答案 0 :(得分:0)
我认为你正在寻找
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-