Tôi đang cố gắng làm bài tập ở nhà bị hạn chế chỉ sử dụng sed
để lọc tệp đầu vào sang định dạng đầu ra nhất định. Dưới đây là các tập tin đầu vào (tên stocks
):Làm cách nào để viết tập lệnh sed vào thông tin grep từ tệp văn bản
Symbol;Name;Volume
================================================
BAC;Bank of America Corporation Com;238,059,612
CSCO;Cisco Systems, Inc.;28,159,455
INTC;Intel Corporation;22,501,784
MSFT;Microsoft Corporation;23,363,118
VZ;Verizon Communications Inc. Com;5,744,385
KO;Coca-Cola Company (The) Common;3,752,569
MMM;3M Company Common Stock;1,660,453
================================================
Và đầu ra cần phải được:
BAC, CSCO, INTC, MSFT, VZ, KO, MMM
tôi đã tìm ra một giải pháp, nhưng nó không hiệu quả. Dưới đây là sed
kịch bản của tôi (tên try.sed
):
/.*;.*;[0-9].*/ { N
N
N
N
N
N
s/\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*\n\(.*\);.*;.*/\1, \2, \3, \4, \5, \6, \7/gp
}
Lệnh mà tôi chạy trên vỏ là:
$ sed -nf try.sed stocks
Câu hỏi của tôi là, là có một cách tốt hơn để sử dụng sed để có được kết quả tương tự ? Kịch bản tôi viết chỉ hoạt động với 7 dòng dữ liệu. Nếu dữ liệu dài hơn, tôi cần phải sửa đổi lại tập lệnh của mình. Tôi không chắc làm thế nào tôi có thể làm cho nó tốt hơn, vì vậy tôi ở đây yêu cầu giúp đỡ!
Cảm ơn mọi đề xuất.
+1 cho thừa nhận điều này là bài tập về nhà và cho hoang dã mà 's/\ (. * \); ....../'thingy bạn đặt trong đó! Chúc may mắn. – shellter