Điểm:0

Cách xóa ký tự cụ thể khỏi tệp

lá cờ za

Tôi có một tập tin như thế này.

[Khách]
[AAD_987d7f2f57d2]
[mhope]
[SABatchJobs]
[svc-ata]
[svc-bexec]
[svc-netapp]
[dgalanos]
[vai diễn]
[smorgan]

Cách xóa '[' và ']' khỏi tệp để tôi có thể nhận đầu ra như bên dưới

Khách
AAD_987d7f2f57d2
mhope
SABatchJobs
svc-ata
svc-bexec
svc-netapp
dgalanos
nhập vai
sorgan
Điểm:2
lá cờ hr

Tiện ích 'tiêu chuẩn' để xóa các ký tự cụ thể là tr:

TÊN
       tr - dịch hoặc xóa ký tự

TÓM TẮT
       tr [OPTION]... SET1 [SET2]

SỰ MIÊU TẢ
       Dịch, nén và/hoặc xóa các ký tự khỏi đầu vào tiêu chuẩn, writâ
       chuyển sang đầu ra tiêu chuẩn.

Ví dụ

tr -d '][' < tập tin

Không giống như GNU sed, tr chỉ đọc và ghi vào các luồng tiêu chuẩn; tuy nhiên, bạn có thể mô phỏng chỉnh sửa "tại chỗ" bằng tệp tạm thời:

tmpfile=$(mktemp)
tr -d '][' < file > "$tmpfile" && mv "$tmpfile" file

hoặc với bọt biển lệnh từ gói tiện ích hơn:

tr -d '][' < tập tin | tập tin bọt biển

Bạn cũng có thể sử dụng awk - ví dụ bằng cách tách các dòng của tệp thành lĩnh vực ngăn cách bởi ][ và chỉ in cái thứ hai:

tệp awk -F '[][]' '{print $2}'

Bạn có thể sử dụng thủ thuật tmpfile tương tự để mô phỏng chỉnh sửa "tại chỗ" hoặc với GNU awk (còn gọi là gawk), sử dụng thay thế mô-đun:

tập tin gawk -i inplace -F '[][]' '{print $2}'
Điểm:2
lá cờ in

Sử dụng sed:

sed 's/[][]//g' tập tin
  • Các sed lệnh là s/mẫu/thay thế/sửa đổi, nghĩa là mẫu thay thế bằng thay thế. g bổ ngữ có nghĩa là gmột lượt, nếu không thì chỉ trận đấu đầu tiên sẽ được thay thế.
  • [...] là một lớp ký tự, vì vậy bất kỳ ký tự nào bên trong dấu ngoặc đều khớp.
  • ] đóng lớp ký tự trừ khi nó ở vị trí đầu tiên bên trong.Vì chúng tôi muốn đưa điều đó vào lớp nhân vật của mình, nên chúng tôi đặt nó lên hàng đầu.
  • Thay thế là trống trong trường hợp của chúng tôi.
  • Sử dụng sed -i '...' để chỉnh sửa tập tin của bạn tại chỗ.

Bạn cũng có thể dùng grep -P như tôi đã đề xuất trong của bạn câu hỏi khác:

tệp grep -Po '\[\K[^]]*'
Lorenz Keel avatar
lá cờ gr
Tôi đã sẵn sàng đề xuất `sed 's/\[\(.*\)\]/\1/' file`, nhưng câu trả lời của bạn dễ đọc và thanh lịch hơn câu trả lời của tôi :-)
Lorenz Keel avatar
lá cờ gr
@tcprks nếu bạn quan tâm đến việc áp dụng sửa đổi trực tiếp trên tệp (tức là ghi đè lên tệp), bạn có thể thêm `-i` trước `file` (điều này chỉ đúng với phần `sed` của giải pháp.
pLumo avatar
lá cờ in
cảm ơn, đã thêm gợi ý đó vào ghi chú của tôi :-)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.