AWK 的奇怪输出

AWK 的奇怪输出

尝试从 csv 文件中提取列(UPC 编号)并在末尾添加空格,以防文件长度小于 14。但是输出末尾有一个 ^M,我不知道如何删除。

此命令适用于除此一列之外的其他列。

awk -F, '{print $8}' $FILE | awk '{printf("%-14s\n", $0) }' > $TEMP/upc

vi 输出:

861601000109^M

736040531685^M

猫输出:

 61601000109

 36040531685

答案1

该文件可能是在 Windows 文本编辑器中打开并保存的。

基于 UNIX 的系统中的行结束符与 Windows 中的行结束符不同。

在 DOS/Windows 计算机上创建的文本文件与在 Unix/Linux 上创建的文件具有不同的行结尾。 DOS 使用回车和换行符(“\r\n”)作为行结束符,而 Unix 仅使用换行符(“\n”)。在 Windows 计算机和 Unix 计算机之间传输文件时需要小心,以确保行结尾正确翻译。

来源

当您cat读取文件时,不会显示 EOL 字符,但是,当您使用 读取文件时vi,则会显示 EOL 字符。

^M从文件中删除的最简单方法可能是使用流编辑器sed删除^M字符。键入此命令:% sed -e "s/^M//" filename > newfilename

要输入^M,请键入CTRL-V,然后CTRL-M。即按住 CTRL 键,然后连续按 V 和 M。

相关内容