gpt4 book ai didi

linux - 打印文件的前 N ​​个字

转载 作者:IT王子 更新时间:2023-10-29 00:55:11 25 4
gpt4 key购买 nike

有没有办法打印文件的前N个字?我试过 cut 但它逐行读取文档。我想到的唯一解决方案是:

sed ':a;N;$!ba;s/\n/δ/g' file | cut -d " " -f -20 | sed 's/δ/\n/g'

本质上,用文件中不存在的字符替换换行符,应用以空格作为分隔符的“剪切”,然后恢复换行符。

有没有更好的解决方案?

最佳答案

您可以使用 awk 打印前 n 个单词:

$ awk 'NR<=8{print;next}{exit}' RS='[[:blank:]]+|\n' file

这将打印前 8 个单词。每个单词都在单独的一行上输出,您是否希望保留文件的原始格式?

编辑:

以下将保留文件的原始格式:

awk -v n=8 'n==c{exit}n-c>=NF{print;c+=NF;next}{for(i=1;i<=n-c;i++)printf "%s ",$i;print x;exit}' file

演示:

$ cat file
one two
thre four five six
seven 8 9
10

$ awk -v n=8 'n==c{exit}n-c>=NF{print;c+=NF;next}{for(i=1;i<=n-c;i++)printf "%s ",$i;print x;exit}' file
one two
thre four five six
seven 8

一个小警告:如果打印的最后一行不使用单个空格作为分隔符,则该行将失去其格式。

$ cat file 
one two
thre four five six
seven 8 9
10

# the 8th word fell on 3rd line: this line will be formatted with single spaces
$ awk -v n=8 'n==c{exit}n-c>=NF{print;c+=NF;next}{for(i=1;i<=n-c;i++)printf "%s ",$i;print x;exit}' file
one two
thre four five six
seven 8

关于linux - 打印文件的前 N ​​个字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15612279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com