我一直在寻找一个awk
或perl
(或者可能sed
?)单行来打印一行中的前80个字符用作:
cat myfile.txt | # awk/perl here
我猜测像perl -pe 'print $_[0..80]'
这样的东西应该有效,但我对perl并不擅长。
编辑 perl -pe 'print $_[0..80]
不起作用,我不知道为什么。这就是我问这个问题的原因。我想在所有那些沉默的downvotes之后解释..
同样cat myfile.txt
只是为了证明命令应该在管道中,我实际上正在使用其他输出。
答案 0 :(得分:13)
<强>切强>
cut -c1-80 your_file
<强> AWK:强>
awk '{print substr($0,0,80)}' your_file
<强> sed的:强>
sed -e 's/^\(.\{80\}\).*/\1/' your_file
<强> perl的:强>
perl -lne 'print substr($_,0,80)' your_file
或:
perl -lpe 's/.{80}\K.*//s' your_file
<强>的grep:强>
grep -o "^.\{80\}" your_file
答案 1 :(得分:2)
答案 2 :(得分:1)
使用如下:
$ cat myfile.txt | awk '{print substr($0,0,80)}'
其他方式是:
$ awk '{print substr($0,0,80)}' x
此处不需要cat
,awk
可以从文件中读取。
答案 3 :(得分:1)
其中一个cut / sed / awk解决方案可能适合您,但您也可能对折叠感兴趣,因为它可以让您在字符计数前面的空格处包裹行并截断,而不是在字符计数处的中间字符如果你愿意,请计算:
$ cat file
the quick brown fox jumped over the lazy dog's back
$ cat file | fold -w29
the quick brown fox jumped ov
er the lazy dog's back
$ cat file | fold -s -w29
the quick brown fox jumped
over the lazy dog's back
$ cat file | fold -w29 | head -1
the quick brown fox jumped ov
$ cat file | fold -s -w29 | head -1
the quick brown fox jumped
顺便说一句,我绝对不会使用上面显示的“cat”,我假设OP有一些其他命令写入stdout并且只是使用“cat”来演示问题。