我有一个文本文件,正在输出到 shell 脚本中的变量中。不过我只需要前 50 个字符。
我尝试过使用,cat ${filename} cut -c1-50
但我得到的字符远多于前 50 个字符?这可能是由于cut
寻找行(不是 100% 确定),而这个文本文件可能是一个长字符串——这实际上取决于情况。
是否有一个实用程序可以让我通过管道获取cat
命令中的前 X 个字符?
答案1
head -c 50 file
这将返回前 50 个字节。
请注意,该命令并不总是在所有操作系统上都以相同的方式实现。在 Linux 和 macOS 上它的行为方式如下。在 Solaris (11) 上,您需要使用 /usr/gnu/bin/ 中的 gnu 版本
答案2
cut
如果您使用管道向其传递数据,您的命令将起作用:
cat ${file} | cut -c1-50
或者,避免无用地使用 cat 并使其更安全:
cut -c1-50 < "$file"
请注意,上面的命令将打印前 50 个字符(或字节,具体取决于您的cut
实现)每条输入线的。如果正如您所说,您的文件是一大行,那么它应该符合您的预期。
答案3
dd status=none bs=1 count=50 if=${filename}
这将返回前 50 个字节。
答案4
grep -om1 "^.\{50\}" ${filename}
其他变体(用于文件中的第一行)
(IFS= read -r line <${filename}; echo ${line:0:50})