Bạn không cần thay đổi dấu phân tách để hiển thị phần bên phải của chuỗi với cut
.
Các -f
tắc của lệnh cut
là yếu tố n-TH phân cách bằng dấu phân cách của bạn: :
, vì vậy bạn có thể chỉ cần gõ:
grep puddle2_1557936 | cut -d ":" -f2
Một giải pháp (thích ứng với nó một chút) nếu bạn muốn vui vẻ:
Sử dụng grep:
grep -oP 'puddle2_1557936:\K.*' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc vẫn với look aroundregex
grep -oP '(?<=puddle2_1557936:).*' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc với perl:
perl -lne '/puddle2_1557936:(.*)/ and print $1' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc sử dụng ruby (nhờ glenn jackman)
ruby -F: -ane '/puddle2_1557936/ and puts $F[1]' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc với awk:
awk -F'puddle2_1557936:' '{print $2}' <<< 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc với python:
python -c 'import sys; print(sys.argv[1].split("puddle2_1557936:")[1])' 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
hoặc chỉ bash sử dụng:
IFS=: read _ a <<< "puddle2_1557936:/home/rogers.williams/folderz/puddle2"
echo "$a"
/home/rogers.williams/folderz/puddle2
hoặc sử dụng js trong một shell:
js<<EOF
var x = 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
print(x.substr(x.indexOf(":")+1))
EOF
/home/rogers.williams/folderz/puddle2
hoặc sử dụng php trong một shell:
php -r 'preg_match("/puddle2_1557936:(.*)/", $argv[1], $m); echo "$m[1]\n";' 'puddle2_1557936:/home/rogers.williams/folderz/puddle2'
/home/rogers.williams/folderz/puddle2
sửa lỗi tối thiểu là sử dụng '-f2' với' cắt'. Btw tại sao nó phải bắt đầu với 'grep puddle2_15579636', sẽ có điều gì xấu xảy ra nếu nó không? – doubleDown
Cảm ơn bạn rất nhiều! Không biết sửa chữa là dễ dàng ... haha. Ngoài ra, nó phải bắt đầu bằng grep puddle2_15579636 vì tôi đang viết kịch bản khá dài, và tại thời điểm đó trong tập lệnh, thông tin duy nhất có sẵn sẽ là! Loại khó giải thích của nó trừ khi bạn thấy toàn bộ dự án! – DeaIss