[問題] (已解)cut文句,結尾有隱藏的垃圾?

看板Linux作者 (如果大海能夠)時間12年前 (2013/06/26 21:26), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串1/1
目前似乎找到原因了 我試著使用tr -d '\n'也沒用時 突然看到鳥哥的教學提到 tr也很常拿來移除^M這種windows的斷行資訊 因為我的A.txt是用windows的筆記本編輯的 然後直接丟進linux平台裡 所以我改成(教學上提到\r就是^M) tr -d '\r',就有用了... 謝謝 ********************************我是分隔星星******************************* 各位大大好 這問題 搞了小弟2天了 orz 假設我有個A.txt檔 檔案內容是 --- name: light number: 123456789 address: 192.168.1.1 --- 然後我有一隻程式名為WORK,是隻輸入number就會工作的程式 所以我開始寫一隻script 執行這隻script,這隻script會把A.txt的數字"123456789"挖出來存成變數 然後再執行叫起WORK把數字餵進去 了事 script的詳細寫法大概是這樣 --- getnumber='grep number: A.txt | cut d ':' f 2' WORK getnumber --- 結果WORK告訴我,輸入的數字長度為10 這不合預期,讓我的WORK跑不順利 因為數字123456789,長度應該是9 我懷疑是cut值的時候,把檔案內的換行也存進變數getnumber了? 但我需要更多的測試才肯定他是否為換行(目前手上沒任何環境 囧) (因為我有初步在"number: 123456789"的後面再補一個":",變"number: 123456789:" 就正常了,所以猜測是cut時以":"為分段,而最後補一個":",就正確切斷了) 如果真的是換行問題 在不改動A.txt與WORK的前題下(只可以改scropt) 我有辦法可以解決這個問題嗎? 還是可能是其他原因所導致的? 我初步的想法是 1.找到其他shell工具,可以更精準的把12345789給撈出來,不知大大們有無更好的建議 2.對getnumber做二度處理,例如再次以換行的基準,去把前面的數字切出來 囧 真的非常謝謝各位大大的分享 -- 有種熟悉總在你心裡深處、眼光餘角出現 越是追求越是千里尋不著 日覆一日,漸漸的也就淡忘 實際卻如影隨行、無聲無息的埋藏在潛意識裡‧‧‧ 也許夜深人靜時又會不經意的輕敲你心房 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.8.63

06/26 22:08, , 1F
為什麼我覺得是 1 前面的空白
06/26 22:08, 1F

06/26 22:23, , 2F
樓上+1
06/26 22:23, 2F

06/26 22:23, , 3F
可是這樣應該不會在後面加個: 就會好吧
06/26 22:23, 3F
兩位大大 抱歉 其實是我環境沒描述好 事實上那一行也不是number 其實是 modeswitch: -M 555342430800498200000000000010ff000000000000000000000000000000 然後我會把-M 555342430800498200000000000010ff000000000000000000000000000000 丟給程式去跑,-M是這個程式挾帶的參數,跟後面那串數字之間有一個空白是合法的 以及我自己手動下給程式 是OK的 直接寫死在script(不是用動態撈),也是ok的 所以在不斷測試下發現是 動態撈出來的東西 骨子裡跟我看到的不一樣 因為交給script自動跑,然後由script餵給程式 程式就會告訴我555342430800498200000000000010ff000000000000000000000000000000 這串的長度不對,多了一位 讓我百思不得其解 我執行script,被程式報錯(script會把自己執行的語句一句句秀出來) 而我直接把script執行的語句純粹在他秀在螢幕地方 copy 然後貼上 敲下enter 就過了... 一個看不到的字元讓長度變長 我只想到換行了 orz 因此順手最後在A.txt後面加個":",竟然就解掉 所以我合理懷疑是後面有換行被cut到了(雖然我覺得不太可能才是) 因為這種shell應該是盡可能很直覺才是,不會把換行也撈進來呀(?) 謝謝

06/26 22:23, , 4F
gawk '$1~/number/{ print $2 }' A.txt |tr -d "\n"
06/26 22:23, 4F

06/26 22:23, , 5F
剛剛玩出的一個方法@@
06/26 22:23, 5F
tr -d "\n"??!! 直接刪掉這樣? 我明天試試看xddd 謝謝

06/27 03:08, , 6F
我怎麼弄 用 expr length 看cut輸出的結果都是9位數呀
06/27 03:08, 6F

06/27 09:08, , 7F
我是用 dog --hex 看輸出啦@@
06/27 09:08, 7F
所以樓上用 dpg --hex看輸出 是真的有把換行也丟出去了? 謝謝

06/27 10:58, , 8F
看到尾巴多個 0A ( ′_>`)
06/27 10:58, 8F
※ 編輯: liwmewmew 來自: 111.250.184.228 (06/27 11:05)
文章代碼(AID): #1HokmLHL (Linux)