私にはコマンドがあります:
$ awk '{ print length($0); }' /etc/passwd
passwdファイルの各行の文字数を出力します:
52
52
61
48
81
58
etc.
最初のn行だけの文字数を印刷するにはどうすればよいですか?
たとえば、最初の3行については次のようになります。
52
52
61
awk
に、十分な行が読み取られたら終了するように指示します。
awk '$0 = length; NR==3 { exit }' /etc/passwd
このソリューションは空行を無視しますが、行数は無視します。
直接のAwkバージョン(@Thorほど効率的ではありません)が、もう少し明確です:
awk 'NR <= 3 {print length}' /etc/passwd
@Thorと@JJoao(私からの+1)によってうまく説明されているように、awk
のみのコマンドで実行できます。
以下に説明するように、awk
とhead
をパラメーター-n
に続けて行数で結合できます。
次の順序で実行する@Maerlynの提案をありがとう:head | awk
例えば次を使用して最初の3行を取得します。
head -n3 /etc/passwd | awk '{ print length($0); }'
-n, --lines=[-]K
print the first K lines instead of the first 10; with the leading '-', print all but the last K lines of each file