awk ✀{if($0~⼀^M⼀) {print gsub(⼀^M⼀,"")} else {print $0} }✀ $1 > test 为啥test中的数据与$1中数据一样

但屏幕上显示的是已经去掉^M的数据???
2025-05-21 07:45:38
推荐回答(4个)
回答(1):

首先你的数据是什么样的?
数据只有一列吗?

你的gsub函数是不是少写了个参数,应该是gsub(/^M/,"",$0)
按你的if、else的逻辑,屏幕上显示的一定是去掉M后的数据。
你并没有对数据进行更改,所以test中的数据就是原数据的第一列。
我认为你说的现象没有什么不对的。

回答(2):

你怎么确定屏幕上现实的是没有^M的数据呢,^M是不可见的字符吧~

应该是脚本写得有问题,awk 貌似不支持 ^M 这种写法把,用 VIM 试试:
:s/^M//g

注:要打出 ^M 需要在 VIM 里,先按 ctrl + v,再按 ctrl + m
希望对你有帮助~

回答(3):

必须一样。不一样就出事了。

回答(4):

因为你$1中的数据都不是以M开头