linux文本處理踩的坑

1,有個文件test.txt,內容爲:

lwhc08131209.jpg,IsBoy:true,HasGF:false,account_bank:local_bank
lwhc08131210.jpg,IsBoy:true,HasGF:false,account_bank:local_bank
lwhc08131211.jpg,IsBoy:true,HasGF:false,account_bank:people_bank
lwhc08131212.jpg,IsBoy:false,HasGF:false,account_bank:null
lwhc08131213.jpg,IsBoy:true,HasGF:false,account_bank:people_bank
lwhc08131214.jpg,IsBoy:true,HasGF:false,account_bank:people_bank

需要根據結尾分類列舉出文件名稱,用awk進行處理,指令如:

awk -F "," '$4=="account_bank:null" {print $4}' test.txt

但是一直沒有輸出結果。測試語法都沒有問題。

想起來這個result.txt是在windows下生成的,在linux下用vim輸入 ":%!xxd"轉內容爲16進制(:%!xxd -r 可以將16進制轉回文本),果然在每行結尾有"\r\n"(16進制的0D0A),因此awk字符串比較結果爲false,因爲少了結尾參數。

可以全局替換掉文本中的"\r\n",或者改用awk的字符串匹配函數match,果然能正常輸出了

[root@localhost idcard-info-bench-mark]# awk -F "," 'match($4, "null") {print $4}' test.txt                                   
account_bank:null
account_bank:null

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章