[英]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.