Tôi đang tải một tệp vào các biến, vấn đề là tệp được định dạng trong Windows, tôi tin, vì vậy tôi nhận được một ^M
thay vì một dòng mới.
Làm cách nào để sửa đổi nó khi giá trị nằm trong biến? Tôi biết rằng tôi có thể sửa đổi nguồn trong VI (bằng cách này, tôi sử dụng OS X), nhưng tôi không thể sửa đổi tệp gốc, chỉ đọc nó, vì vậy tôi phải xóa ^M
khỏi biến.
Theo hiểu biết của tôi, \n
không giống như ^M
, vì vậy tr
lệnh sẽ không hoạt động.
BIÊN TẬP
Có vẻ như câu hỏi không rõ ràng; Vì vậy, đây là sự làm rõ.
Tôi phân tích từng dòng tập tin; mỗi dòng có 2 giá trị, được phân tách bằng tab và ở cuối mỗi dòng, có một ^ M, nó trông như thế này:
value1 value2^M
value3 value4^M
value5 value6^M
value7 value8^M
Quy trình làm việc của tôi khá đơn giản và đơn giản: tệp txt chứa những gì bạn thấy ở trên, các trường riêng biệt của vòng lặp và cho mỗi dòng nhận các giá trị; Khi tôi in giá trị thứ hai, nó có ^ M, mà tôi muốn xóa
while IFS=$'\t' read -r -a line
do
Type1="${line[0]}"
Type2="${line[1]}"
done < $TXTFILE
Có nghĩa là khi tôi in Type1 thì không sao, nhưng biến Type2 chứa ^ M. Tôi đã sử dụng tr
và nó không hoạt động, tôi đã sử dụng sed
để loại bỏ ký tự cuối cùng của biến và nó không hoạt động. Hy vọng điều này làm rõ câu hỏi của tôi. Cảm ơn
tr
nhưng câu hỏi là cách để mở rộng. Chúng tôi không biết đầu vào hoặc đầu ra là gì, cũng như kịch bản trông như thế nào.
sed 's|\r||' file
thay vìfile