$ ex -sc $'%s/\r$//e|x' file
从终端完美运行,但是当我尝试使用.sh
脚本运行它时,它只是忽略了之后的行ex
。
$ rm ~/Desktop/projectautomate/finalutf81.csv
$ rm ~/Desktop/projectautomate/finalutf8.csv
$ cat ~/Desktop/projectautomate/headersutf8.csv ~/Desktop/projectautomate/upload.csv >> ~/Desktop/projectautomate/finalutf8.csv
$ iconv -f utf-16 -t utf-8 ~/Desktop/projectautomate/finalutf8.csv -o ~/Desktop/projectautomate/finalutf81.csv -c
$ ex -sc $'%s/\r$//e|x' ~/Desktop/projectautomate/finalutf81.csv
一切都正常,但最后一行命令不行。我基本上是想从文件 finalutf8.csv 中删除 CRLF(行尾控制字符)。如果能提供一些详细的解释就更好了。如果不清楚,因为英语是我的第二语言,我会尽量解释一下。
答案1
这些是做什么$
用的?
#!/bin/sh
ex -sc '%s/\r//e|x' toto.txt
似乎按照你想要的方式工作。
答案2
$''
只是 bash 的事情;shell 脚本可能正在使用 sh 或 dash 执行。将
#!/bin/bash
在第一行。