Tôi đang cố gắng trích xuất các mẫu từ cat ing một tệp trong tập lệnh bash. Tôi cần trích xuất 10 và 80 theo từng dòng. Làm thế nào để tôi làm điều này?
Total Branch Predictor Mispredictions: 10
Total Branch Predictor OK predictions: 80
Tôi đang cố gắng trích xuất các mẫu từ cat ing một tệp trong tập lệnh bash. Tôi cần trích xuất 10 và 80 theo từng dòng. Làm thế nào để tôi làm điều này?
Total Branch Predictor Mispredictions: 10
Total Branch Predictor OK predictions: 80
Câu trả lời:
$ cat > data
Total Branch Predictor Mispredictions: 10
Total Branch Predictor OK predictions: 80
$ cat data | awk '{print $NF}'
10
80
$ cat data | awk '{printf "%s ",$NF}'
10 80 $ awk '{printf "%s ",$NF}' < data
10 80 $
awk
không chỉ biết $1
, $2
vv để giải quyết cột thứ n , mà còn $NF
để giải quyết cột cuối cùng (trong trường hợp này, 10
và 80
). Lệnh thứ hai sử dụng printf
thay vì print
nhổ mọi thứ trong một dòng (quan sát dòng mới bị thiếu ở cuối). Lệnh thứ ba tránh sử dụng cat
.
Ngoài ra còn có một giải pháp liên quan đến sed
:
$ sed 's/^[^:]*: \([0-9]*\)/\1 /' < data
10
80
Và người ta chỉ liên quan đến bash
:
$ while read line; do printf "%s " "${line##*: }"; done < data; echo
10 80
$
trong đó đọc từng dòng tệp, xử lý line
biến bằng cách xóa mẫu khớp lớn nhất từ bên trái (trong trường hợp này: mọi thứ lên đến :
) và chuyển nó sang printf
, sau đó tiến hành định dạng nó. Tôi đã thêm echo
vào cuối để có một dòng mới cuối cùng :)
cat data | awk '{printf "%s ",$NF}'
.
$ awk '{printf "%s ",$NF}' < data
(mặc dù OP đã nói rõ ràng về mèo ).
10 80
(mặc dù rất khó để hướng dẫn ai đó khi anh ta không chỉ định, nơi anh ta muốn nhận)