从 cat 命令获取前 X 个字符?

从 cat 命令获取前 X 个字符?

我有一个文本文件,正在输出到 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})

相关内容