Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在macOS上添加后缀不适用于sed和awk_Macos_Awk_Sed_Suffix - Fatal编程技术网

在macOS上添加后缀不适用于sed和awk

在macOS上添加后缀不适用于sed和awk,macos,awk,sed,suffix,Macos,Awk,Sed,Suffix,这些是t.txt ABCDEFG ABCDEFG ABCDEFG ABCDEFG 我尝试使用以下命令在行的末尾添加后缀: $ cat t.txt | sed -e 's/$/-asdf/' $ cat t.txt | awk '{ print $0 "-asdf" }' macOS中的结果: -asdfFG -asdfFG -asdfFG ABCDEFG-asdf Linux中的结果是: ABCDEFG-abcd ABCDEFG-abcd ABCDEFG-abcd ABCDEFG-abcd

这些是
t.txt

ABCDEFG
ABCDEFG
ABCDEFG
ABCDEFG
我尝试使用以下命令在行的末尾添加后缀:

$ cat t.txt | sed -e 's/$/-asdf/'
$ cat t.txt | awk '{ print $0 "-asdf" }'
macOS中的结果:

-asdfFG
-asdfFG
-asdfFG
ABCDEFG-asdf
Linux中的结果是:

ABCDEFG-abcd
ABCDEFG-abcd
ABCDEFG-abcd
ABCDEFG-abcd

为什么我不能在macOS中得到相同的结果?

您的文件中有回车符。macOS Sierra,在仅LF文件上使用内置sed:

mike ~ ❱❱❱ cat t.txt
ABCDEFG
ABCDEFG
ABCDEFG
ABCDEFG
mike ~ ❱❱❱ /usr/bin/sed -e 's/$/-asdf/' t.txt
ABCDEFG-asdf
ABCDEFG-asdf
ABCDEFG-asdf
ABCDEFG-asdf
使用CRLF重新保存它:

mike ~ ❱❱❱ /usr/bin/sed -e 's/$/-asdf/' t.txt
-asdfFG
-asdfFG
-asdfFG
-asdfFG

你的档案里有运费申报单。macOS Sierra,在仅LF文件上使用内置sed:

mike ~ ❱❱❱ cat t.txt
ABCDEFG
ABCDEFG
ABCDEFG
ABCDEFG
mike ~ ❱❱❱ /usr/bin/sed -e 's/$/-asdf/' t.txt
ABCDEFG-asdf
ABCDEFG-asdf
ABCDEFG-asdf
ABCDEFG-asdf
使用CRLF重新保存它:

mike ~ ❱❱❱ /usr/bin/sed -e 's/$/-asdf/' t.txt
-asdfFG
-asdfFG
-asdfFG
-asdfFG


您能否将
cat-A t.txt的输出添加到问题中?这闻起来像
\r\n
的情况。使用
dos2unix文件
或在awk
sub(/\r/,“”,$NF)
ro中删除
\r
。尝试类似于
cat t.txt | LC\u ALL=C sed-e's/$/-asdf/'
cat t.txt | sed-e's/*/.&-asdf/'
@Sundeep没有此类选项用于cat-inmacOS@JamesBrown我在做macOS,没有\r\n。您可以将
cat-A t.txt
的输出添加到问题中吗?这闻起来像
\r\n
的情况。使用
dos2unix文件
或在awk
sub(/\r/,“”,$NF)
ro中删除
\r
。尝试类似于
cat t.txt | LC\u ALL=C sed-e's/$/-asdf/'
cat t.txt | sed-e's/*/.&-asdf/'
@Sundeep没有此类选项用于cat-inmacOS@JamesBrown我正在macOS上工作,没有。openbsd上的行为相同。我认为mac的awk和openbsd是一样的。顺便说一句,我的geany编辑器允许我通过菜单选择行尾:LF(unix)-Windows(CRLF)和经典的Mac CR。是的,macOS使用所有BSD实用程序,这会导致混乱!这就是说,我使用
gsed
获得了与CRLF文件相同的行为。我有Debian-FreeBSD(VM)和OpenBSD(VM),它们都在repo中有可用的gawk。我想连麦克都有点傻。我仍然无法理解为什么大多数非Linux用户拒绝使用gnu工具,而这些工具在大多数发行版上都可用。实际上,我不得不通过MacPorts安装gawk。根本不是内置的。内置的只有Debian和类似的Linux发行版。也不是内置在BSD上。但它离我们只有几封信……:)openbsd上的行为相同。我认为mac的awk和openbsd是一样的。顺便说一句,我的geany编辑器允许我通过菜单选择行尾:LF(unix)-Windows(CRLF)和经典的Mac CR。是的,macOS使用所有BSD实用程序,这会导致混乱!这就是说,我使用
gsed
获得了与CRLF文件相同的行为。我有Debian-FreeBSD(VM)和OpenBSD(VM),它们都在repo中有可用的gawk。我想连麦克都有点傻。我仍然无法理解为什么大多数非Linux用户拒绝使用gnu工具,而这些工具在大多数发行版上都可用。实际上,我不得不通过MacPorts安装gawk。根本不是内置的。内置的只有Debian和类似的Linux发行版。也不是内置在BSD上。但它离我们只有几封信……:)