簡體   English   中英

打印匹配 'pattern' 字符串的行,不包括 'pattern'

[英]Print the line matching 'pattern' string, excluding the 'pattern'

我在文本文件“file.txt”中有以下幾行

String1 ABCDEFGHIJKL
String2 DCEGIJKLQMAB

我想像這樣在另一個文本文件'text.txt'中打印與'String1'對應的字符

ABCDEFGHIJKL

在這里,我不想使用任何行號。 使用“sed”命令有什么建議嗎? 我嘗試在“字符串 1”和“字符串 2”之間使用,但無法獲得不包括“字符串 1”的命令。 以下代碼僅用於排除“string2”。

sed -n '/^string1/,/^string2/{p;/^string2/q}' file.txt | sed '$d' > text.txt
awk '$1=="String1" { print $2 }' file.txt > text.txt

如果第一個空格分隔字段等於“String1”,則打印第二個字段。 將 output 重定向到 text.txt。

使用 GNU grep

grep -Po 'String1\s+\K.*' in_file

在這里, grep使用以下選項:
-P :使用 Perl 正則表達式。
-o :僅打印匹配項(每行 1 個匹配項),而不是整行。

\K :導致正則表達式引擎“保留”它在\K之前匹配的所有內容,而不是將其包含在匹配中。 具體來說,在打印匹配項時忽略正則表達式的前面部分。

也可以看看:
grep說明書
perlre - Perl 正則表達式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM