Một vài lời khuyên chung (bên cạnh dòng vấn đề kết thúc DOS):
cat
là dành cho concatenating file, nó không phải là công cụ duy nhất có thể đọc các tập tin! Nếu lệnh không đọc tệp thì hãy sử dụng chuyển hướng như command < file
.
Bạn có thể đặt tách lĩnh vực với các tùy chọn -F
nên thay vì:
cat foo | awk 'BEGIN{FS="|"} {print $2 " " $1}'
Hãy thử:
awk -F'|' '{print $2" "$1}' foo
Sản lượng này sẽ:
com.emailclient.account [email protected]
com.socialsite.auth.accoun [email protected]
Để có được kết quả mong muốn bạn có thể làm nhiều thứ. Tôi muốn có lẽ split()
trường thứ hai:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file
emailclient [email protected]
socialsite [email protected]
Cuối cùng để có được những nhân vật đầu tiên chuyển đổi sang chữ hoa là một chút của một cơn đau ở awk
như bạn không có một tốt đẹp được xây dựng trong ucfirst()
chức năng:
awk -F'|' '{split($2,a,".");print toupper(substr(a[2],1,1)) substr(a[2],2),$1}' file
Emailclient [email protected]
Socialsite [email protected]
Nếu bạn muốn một cái gì đó ngắn gọn hơn (mặc dù bạn từ bỏ một tiểu trình) bạn có thể làm:
awk -F'|' '{split($2,a,".");print a[2]" "$1}' file | sed 's/^./\U&/'
Emailclient [email protected]
Socialsite [email protected]
Nguồn
2013-03-24 12:44:27
Cảm ơn bạn, đó là * rất * hữu ích là tốt! – Sazzy