Giả sử $ 2 là biến của tôi. Tôi đã cố gắng đi từLàm thế nào tôi có thể cắt không gian màu trắng từ một biến trong awk?
awk -F\, '{print $2 ":"}'
để
awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'
Nhưng nó đi từ in cái gì đó để in gì cả.
Giả sử $ 2 là biến của tôi. Tôi đã cố gắng đi từLàm thế nào tôi có thể cắt không gian màu trắng từ một biến trong awk?
awk -F\, '{print $2 ":"}'
để
awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}'
Nhưng nó đi từ in cái gì đó để in gì cả.
Bạn đang in kết quả của gsub
, nhưng gsub
thực hiện sửa đổi tại chỗ $2
thay vì trả lại bản sửa đổi. Gọi gsub
, sau đó in:
awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'
(Tôi không có đủ điểm để nhận xét về các câu trả lời trước trực tiếp.)
Để cắt khoảng trắng tại cuối của $2
sử dụng:
awk -F\, '{gsub(/[ \t]+$/, "", $2); print $2 ":"}'
Để cắt khoảng trắng tại bắt đầu của $2
sử dụng:
awk -F\, '{gsub(/^[ \t]+/, "", $2); print $2 ":"}'
Và đối với cả hai kết thúc và bắt đầu:
awk -F\, '{gsub(/^[ \t]+/, "", $2); gsub(/[ \t]+$/, "", $2); print $2 ":"}'
Những chức năng có ích để cải thiện khả năng đọc. Họ cũng trả lại kết quả tỉa:
function ltrim(s) { sub(/^[ \t\r\n]+/, "", s); return s }
function rtrim(s) { sub(/[ \t\r\n]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }
BEGIN {
# whatever
}
{
# whatever
}
END {
# whatever
}
cảm ơn! như bạn đã nói, mã của tôi trở nên dễ đọc. – haper
Một lót cho gawk:
gawk -F\, '{$2 = gensub(/^[ \t]*|[ \t]*$/,"","g",$2)}'
LTRIM và RTRIM trong Unix
awk 'BEGIN{FS=OFS="|"} {gsub(/^[ \t]+|[ \t]+$/, "", $2)}1' filename.txt
Trông thứ ba dòng có thể được viết tắt là 'awk -F \,' {gsub (/^[\ t] + | [\ t] + $) /, "", $ 2); in $ 2 ":"} ''. Tâm trí rằng dấu hiệu ống mạnh mẽ! :) – syntaxerror