如何删除 ˆM 字符?

发布于 2024-09-04 21:30:48 字数 223 浏览 10 评论 0原文

我有一个从 Windows 生成的文件,我必须将其粘贴到 Linux 下的脚本中。 我的脚本工作正常,除了在每一行的末尾我得到一个 ^M 字符。

我怎样才能用bash删除它?

目前我的脚本是:

#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
    echo $CUSTOMER
done

I have a file generated from windows that I have to paste into a script under linux.
My script works fine, except for the fact that at the end of every line I got a ^M char.

How can I remove it with bash?

Currently my script is:

#/bin/bash
IFS=
\n'
for CUSTOMER in `cat exp.csv`
do
    echo $CUSTOMER
done

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

九歌凝 2024-09-11 21:30:48

在进一步处理之前,在 exp.csv 上调用 dos2unix

Call dos2unix on exp.csv before further processing.

甜味拾荒者 2024-09-11 21:30:48

^M 应该是 windows 换行符 \r,因此你只需删除所有 \r
您可以使用 tr 工具来实现此目的,您可以从 bash 脚本中调用该工具,这是来自维基百科文章(我没有验证它):

tr -d '\r' < inputfile > outputfile

因此,从 bash 应该是这样的

VAR=`echo -n $CUSTOMER | tr -d '\r'`

^M should be windows newline \r, therefore you just need to remove all \r
You can achieve this using the tr tool, which you can call from your bash script, this is from the wikipedia article (i did not verify it):

tr -d '\r' < inputfile > outputfile

Therefore, from bash it should be something like

VAR=`echo -n $CUSTOMER | tr -d '\r'`
情仇皆在手 2024-09-11 21:30:48

我经常使用 tr 这样做。 CR 字符是八进制的 013:

tr -d '\013' < $FILE

所以在你的循环中,这就是

for CUSTOMER in `tr -d '\013' < exp.csv`

I do this a lot using tr. The CR character is 013 in octal:

tr -d '\013' < $FILE

So in your loop, that would just be

for CUSTOMER in `tr -d '\013' < exp.csv`
我纯我任性 2024-09-11 21:30:48

文件上的 dos2unix 命令

dos2unix command ont he file

执手闯天涯 2024-09-11 21:30:48

有多种方法可以从文件中删除错误的char M

  1. 使用命令dos2unix file_name

  2. 在 vi 编辑器中打开文件,转到
    命令模式并输入 :%s/ctrl+v ctrl+m//g 这将删除所有坏的
    您文件中的字符。现在使用 :wq 保存并退出

  3. sed -e "s/^M//" filename(exist file name) > newfilename(新名称)

    sed -e "s/^M//" 文件名(存在文件名) > newfilename(新名称)

注意:要在 unix 服务器上查找错误字符,请对所有 java 文件点击以下命令

find . -name "*.java*"  -type f | xargs grep -l ^M *

类似地,您可以使用 "*.*" 而不是 "*.java" 适用于所有类型的文件

there are several ways to remove bad char M from your file

  1. use command dos2unix file_name

  2. open file in vi editor, go to
    command mode and type :%s/ctrl+v ctrl+m//g this will remove all bad
    chars from you file. now use :wq for save and exit

  3. sed -e "s/^M//" filename(exist file name) > newfilename(new name)

    sed -e "s/^M//" filename(exist file name) > newfilename(new name)

NOTE: to find bad chars on unix server hit below command for all java files

find . -name "*.java*"  -type f | xargs grep -l ^M *

Similarly you can use "*.*" instead of "*.java" for all type of files

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文