尝试从 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。