我有一個管道分隔檔案,如下所示:
123| ste hen| 456| out put
143 | ste hen| 456| out put
我想洗掉空格---像這樣
123,ste hen,456,out put
143,ste hen,456,out put
這是我的代碼,但不起作用..
awk '{gsub(/^ | $/,"|"); gsub(/ *, */,"|")}1' test2.txt
uj5u.com熱心網友回復:
我的第一個也是快速的方法是下一個:
cat testFile.txt | sed 's/|/,/g' | sed 's/\s*,\s*/,/g''
過去的命令顯示以下結果:
123,ste hen,456,out put
143,ste hen,456,out put
從以下輸入:
123| ste hen| 456| out put
143 | ste hen| 456| out put
uj5u.com熱心網友回復:
我會AWK按照以下方式使用 GNU ,讓file.txt內容成為
123| ste hen| 456| out put
143 | ste hen| 456| out put
然后
awk '{gsub(/ *\| */,",");print}' file.txt
輸出
123,ste hen,456,out put
143,ste hen,456,out put
相比之下所做的更改 {gsub(/^ | $/,"|"); gsub(/ *, */,"|")}1
- 消除
^即開始 - 消除
$即結束 - 轉義,
|因為您需要文字|而不是替代品 *在每個周圍尋找零個或多個 ( ) 空格,|而不是每側至少有 1 個空格- 用
gsub一個替換了兩個 - 觸發通過列印
print而1(風格問題,請咨詢你的情況你的組織使用的解決方案適當的風格指南)
(在 gawk 4.2.1 中測驗)
uj5u.com熱心網友回復:
一個sed解決方案:
sed 's/^ *//; s/ *$//; s/ *| */,/g' file
uj5u.com熱心網友回復:
awk '{gsub(/ *| */, "|");print}' test2.txt
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/400978.html
上一篇:處理bash腳本中的特殊字符
