有一個包含以下資料的檔案:
示例檔案:
id|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl
NoData|\N|6ypXQwLw8H9svA|04271|NoData
NoData|\N|7MFzlQriUjohVg|60475|NoData
NoData|\N|8AtEVeaU3fiK5w|91305|NULL
NoData|\N|AA3B5BNqNTokWw|87818|NoData
NoData|\N|CG79LhAgIeBkPw|80199|NULL
使用sed替換NoData,NULL并且\N:
sed -i "s/\\\\\N//g" samplefile
sed -i "s/\x0//g" samplefile
sed -i "s/NoData//g" samplefile
實際結果:
id|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl
NoData|\N|6ypXQwLw8H9svA|04271|NoData
NoData|\N|7MFzlQriUjohVg|60475|NoData
NoData|\N|8AtEVeaU3fiK5w|91305|NULL
NoData|\N|AA3B5BNqNTokWw|87818|NoData
NoData|\N|CG79LhAgIeBkPw|80199|NULL
預期結果:
id|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl
||6ypXQwLw8H9svA|04271|
||7MFzlQriUjohVg|60475|
||8AtEVeaU3fiK5w|91305|
||AA3B5BNqNTokWw|87818|
||CG79LhAgIeBkPw|80199|
沒有得到sed命令中的錯誤或遺漏,它沒有產生預期的結果。
實施建議后更新測驗結果:
建議_1:
sed -Ei 's/\\N|NULL|NoData//g' samplefileid|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl 6ypXQwLw8H9svA|04271 7MFzlQriUjohVg|60475 8AtEVeaU3fiK5w|91305 AA3B5BNqNTokWw|87818 CG79LhAgIeBkPw|80199建議_2:
awk 'BEGIN{FS=OFS="|"} NR>1{$1=$2=$5=""} 1' samplefileid|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl 6ypXQwLw8H9svA|04271 7MFzlQriUjohVg|60475 8AtEVeaU3fiK5w|91305 AA3B5BNqNTokWw|87818 CG79LhAgIeBkPw|80199
盡管如此,它還是不符合預期的結果。有沒有辦法保留分隔符并僅用空格替換值?
uj5u.com熱心網友回復:
Suggestion_2從@EdMorton 評論中測驗您的代碼,在 GNU 中awk得到expected result:
awk 'BEGIN{FS=OFS="|"} NR>1{$1=$2=$5=""} 1' file id|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl
||6ypXQwLw8H9svA|04271|
||7MFzlQriUjohVg|60475|
||8AtEVeaU3fiK5w|91305|
||AA3B5BNqNTokWw|87818|
||CG79LhAgIeBkPw|80199|
GNU awk 版本:
awk --version
GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1)
....
與sed來自@jthill 評論的結果相同:
sed -E 's/(\\N|NULL|NoData)//g' file id|mdl_name|mdl_tagid|mdl_brnchcd|mdls_mktvl
||6ypXQwLw8H9svA|04271|
||7MFzlQriUjohVg|60475|
||8AtEVeaU3fiK5w|91305|
||AA3B5BNqNTokWw|87818|
||CG79LhAgIeBkPw|80199|
這可以幫助:https : //unix.stackexchange.com/questions/145402/regex-alternation-or-operator-foobar-in-gnu-or-bsd-sed
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/335639.html
上一篇:為什么在bash中運行for回圈會導致不需要的輸出而不是回圈?[復制]
下一篇:在shell腳本中呼叫鏈碼函式
