Awk

在 Perl 中使用 awk 列印子字元串匹配後出現的文本

  • November 4, 2020

我在一個文件中有多個字元串,如下所示MyFile-

1234|5|678|ABC|d|e| MyString - values: foo 1, bar 10%, baz 2/2, qux quux 10 sec, quuz 10km

如何1234 10 sec根據子字元串匹配列印子字元串qux quux

這是我嘗試過的 -grep -a "qux quux" MyFile | cut -d '|' -f 1,7 | awk '{print $1, " ",$13," ",$14}' |sed -e 's/|//' | sed -e 's/,//' > $output

但如果字元串的內容髮生變化,上述命令最終會複製錯誤的值。

謝謝。

單獨的 awk,假設您想要擷取所有內容,直到以下逗號:

$ awk -F'|' -v r="qux quux " '
   match($0,r "[^,]*") {print $1, substr($0,RSTART+length(r),RLENGTH-length(r))}
 ' MyFile
1234 10 sec

GNU awk:

$ gawk -F'|' 'match($0,/qux quux ([^,]*)/,a) {print $1, a[1]}' MyFile
1234 10 sec

珀爾:

$ perl -F'\|' -lne 'print "$F[0] $1" if /qux quux ([^,]*)/' MyFile
1234 10 sec

引用自:https://unix.stackexchange.com/questions/617892