Giả sử tập tin chứa:
$ cat file
Text-here>xyz</more text
Và bạn muốn (các) ký tự nằm giữa >
và </
, bạn có thể sử dụng một trong hai:
grep grep -oP '.*\K(?<=>)\w+(?=<\/)' file
sed sed -nE 's:^.*>(\w+)</.*$:\1:p' file
awk awk '{print(gensub("^.*>(\\w+)</.*$","\\1","g"))}' file
perl perl -nle 'print $1 if />(\w+)<\//' file
Tất cả sẽ in một chuỗi "xyz".
Nếu bạn muốn chụp các chữ số của dòng này:
$ cat file
Text-<here>1234</text>-ends
grep grep -oP '.*\K(?<=>)[0-9]+(?=<\/)' file
sed sed -E 's:^.*>([0-9]+)</.*$:\1:' file
awk awk '{print(gensub(".*>([0-9]+)</.*","\\1","g"))}' file
perl perl -nle 'print $1 if />([0-9]+)<\//' file
sed
ứng ngược để làm điều đó không?