2012-02-19 29 views
5

Tôi mới vào shell scripting và tôi đã sử dụng đoạn mã sau vào không gian đôi một tập tin (file đầu vào là một tham số):tập tin khoảng cách kép sử dụng sed trong shell script

sed G $input_file >> $input_file 

Vấn đề là, nếu nội dung của tập tin ban đầu của tôi là:

Hi 
My name is 

tập tin đôi cách nhau của tôi là:

Hi 
My name is 
Hi 

My name is 

có cái gì khác tôi cần phải thêm vào tập lệnh trình bao để tệp của tôi sẽ chỉ là:

Hi 

My name is 

Trả lời

5

Bạn đang sử dụng toán tử nối thêm (>>), gắn thêm vào tệp được đề cập. Điều đó đang được nói, bạn thường không thể hoạt động trên và xuất ra cùng một tệp với > trong bash, một trong hai. Đối với trường hợp cụ thể sed 's, bạn có thể sử dụng -i tùy chọn (tùy thuộc vào phiên bản và nền tảng):

sed -i G $input_file 

Điều đó sẽ chỉnh sửa tập tin của bạn 'tại chỗ', nếu phiên bản của bạn có tùy chọn đó. Tôi nói "tại chỗ" bởi vì tôi khá chắc chắn nó thực sự tạo ra một tập tin mới và di chuyển nó trở lại trên đầu trang của một trong những đầu tiên cho bạn (inode là khác nhau). Nếu không, bạn sẽ xuất ra một tệp riêng biệt và di chuyển tệp trở lại:

sed G ${input_file} > ${input_file}.bak 
mv ${input_file}.bak ${input_file} 
+0

Tôi đã sử dụng (>) trước đó nhưng nó không hoạt động, cảm ơn việc thanh toán bù trừ cho tôi! – jbisa

Các vấn đề liên quan