1

重複の可能性:
標準入力行の長さを切り捨てますか?

awk次のように使用する行の最初の 80 文字を出力するor perl(または多分sed?) ワンライナーを探していました。

cat myfile.txt | # awk/perl here

私はうまくいくperl -pe 'print $_[0..80]'はずだと思っていますが、私はperlが得意ではありません。

EDIT perl -pe 'print $_[0..80]が機能せず、理由がわかりません。それが私がこの質問をした理由です。黙って反対票を投じた後、説明したい気分です..

またcat myfile.txt、コマンドがパイプ内にある必要があることを示すためだけに、実際には他の出力を使用しています。

4

4 に答える 4

13

切る:

cut -c1-80 your_file

awk:

awk '{print substr($0,0,80)}' your_file

シード:

sed -e 's/^\(.\{80\}\).*/\1/' your_file

パール:

perl -lne 'print substr($_,0,80)' your_file

また:

perl -lpe 's/.{80}\K.*//s' your_file

grep:

grep -o "^.\{80\}" your_file
于 2012-10-15T12:18:10.463 に答える
2

, を使用cutして最初の文字を取得します。

$ cut -c1-80 myfile.txt

最初のバイトが必要な場合は、次を使用します-b

$ cut -b1-80 myfile.txt
于 2012-10-15T12:13:06.173 に答える
1

cut/sed/awk ソリューションの 1 つがおそらく適切ですが、折り畳みに興味があるかもしれません。お気に入り:

$ 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」を使用しているだけだと思います。

于 2012-10-15T16:25:36.793 に答える
1

次のように使用します。

$ cat myfile.txt | awk '{print substr($0,0,80)}'    

他の方法は次のとおりです。

$ awk '{print substr($0,0,80)}' x

ここでは は不要でcatawkファイルから読み取ることができます。

于 2012-10-15T12:18:21.170 に答える