để sử dụng AWK để cắt đứt các lĩnh vực đầu tiên và lần cuối:
awk '{$1 = ""; $NF = ""; print}' inputfile
Thật không may, đó rời tách lĩnh vực, vì vậy
aaa bbb ccc
trở thành
[space]bbb[space]
Để thực hiện điều này bằng câu trả lời Kurumi của đó sẽ không rời khỏi không gian thêm, nhưng theo một cách đó là cụ thể cho các yêu cầu của bạn:
awk '{delim = ""; for (i=2;i<=NF-1;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile
Điều này cũng khắc phục một số vấn đề trong câu trả lời đó.
Để khái quát rằng:
awk -v skipstart=1 -v skipend=1 '{delim = ""; for (i=skipstart+1;i<=NF-skipend;i++) {printf delim "%s", $i; delim = OFS}; printf "\n"}' inputfile
Sau đó, bạn có thể thay đổi số lĩnh vực để bỏ qua ngay từ đầu hoặc kết thúc bằng cách thay đổi các bài tập biến vào đầu của lệnh.
Nguồn
2011-02-10 15:54:53
Nó wor ks tốt hơn nhiều với một dấu phân cách ....... cut -d '' -f -2 <<< 'Đây là một thử nghiệm' – Yogamurthy