質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

1321閲覧

テキストをn行おきに出力したい

MacB

総合スコア8

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2021/11/28 13:38

テキストをn行おきに出力したいと思いネットで検索したところこのページを見つけて試したところうまくいきましたが(NR%3==0)の部分が何を表しているのかわかりません。とりあえず%の後の数字を変更することで得たい結果は得られているのですが、その前後はどういう意味なのか教えて貰えますか。

cat file.txt | awk '(NR%3==0){print}'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

itagagaki

2021/11/28 13:51

> その前後はどういう意味なのか 「前後」とは、具体的に言うと、どこですか?
melian

2021/11/28 13:51

ちなみにですが、 cat file.txt | awk '!(NR%3)' と書いても同じ結果を得ることができます。
guest

回答2

0

ベストアンサー

awkコマンドの中のコードは、条件{条件が真の時に実行すること}という書式です。
ここで、条件がNR%3==0で、それが真ならprint(入力行を出力)です。

NRは1から始まる行番号です。
%は余りを求める演算子なので、「行番号を3で割った余りが0なら(3で割り切れれば)printする」という事になります。

括弧は要らないですね。普通は、

sh

1awk 'NR%3==0{print}'

です。

投稿2021/11/28 13:54

otn

総合スコア84808

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/11/28 13:56

条件部分を省略した場合は、「常に真」 実行部分を括弧ごと省略した場合は、「print」 となります。
guest

0

NRはawkの組み込み変数の一つです。
awkのNR変数で行数に応じた処理をする | ITを使っていこう

%は剰余の計算に使われる演算子です。
剰余演算 - Wikipedia

投稿2021/11/28 13:56

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問