Trong awk tôi có thể viết: awk -F: 'BEGIN {OFS = FS} ...'
biến cho tách trường trong perl
Trong Perl, tương đương với FS
là gì? Tôi muốn viết
perl -F: -lane 'BEGIN {$, = [what?]} ...'
cập nhật với một ví dụ:
echo a:b:c:d | awk -F: 'BEGIN {OFS = FS} {$2 = 42; print}'
echo a:b:c:d | perl -F: -ane 'BEGIN {$, = ":"} $F[1] = 42; print @F'
Cả hai đầu ra a:42:c:d
Tôi không muốn cứng mã :
trong khối Perl BEGIN , nhưng hãy tham khảo bất cứ nơi nào tùy chọn -F
lưu đối số của nó.
Tôi không quen với awk ... bạn có thể cung cấp ví dụ về những gì bạn đang cố gắng thực hiện với perl không? Tôi có lẽ có thể trả lời tốt hơn câu hỏi awl-> perl. Tôi thu thập rằng OFS là phân tách trường đầu ra (mà bạn đã xác định chính xác là $, trong perl), và FS là đầu vào? phân tách trường? Tôi không nghĩ rằng perl có một khái niệm như vậy ... mặc dù có thể chức năng split() là tương tự, tuy nhiên nó không có một "bộ phân tách" mặc định - nó phải được cung cấp trực tiếp. – Flimzy
@Flimzy, câu hỏi được cập nhật –
Tham số tới '-F' thực sự là một regex, không phải là chuỗi ký tự, vì vậy tôi không nghĩ rằng nó có thể truy cập trực tiếp bằng bất kỳ biến đặc biệt nào. – friedo