2012-10-25 386 views
10

我在bash腳本中使用AWK的末尾添加一個CONTROL-M的性格和做類似:AWK打印在行

awk -F, -v result_file=$2'{ 
print $2 $1 > result_file 
}' $data_file 

在輸出文件,我得到一個控制-M「^ M'字符在每行的末尾。哪裏不對?

+2

輸入文件可能包含^ M。如果是這樣,請從那裏刪除它。 – Guru

+1

您是否在PC上創建了數據文件?它的行結尾是^ M^J,而Unix只使用^ J。 – Barmar

+4

將記錄分隔符設置爲CR-LF,即'awk -v RS ='\ r \ n'...'。 – Thor

回答

11

的記錄分隔符被自動設置爲當前系統的行結束,LF(\n)在基於Unix的系統,CR-LF(\r\n)在MS系統和CR(\r)在Mac OS之前Mac OS X的所以對記錄設置的記錄分隔適當的MS系統上的文件時,你的情況:

awk -v RS='\r\n' ... 
+1

Mac OS X是一個類似Unix的系統,它使用'\ n'行尾。 Mac OS 9不是基於Unix並使用'\ r'結尾。 –

+0

@JonathanLeffler:你說得對,謝謝你的糾正。 – Thor