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

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

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

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

解決済

1回答

1172閲覧

awkの構文での不明点を教えていただきたいです。

sect_123

総合スコア7

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2017/01/05 10:02

###前提・実現したいこと
csvファイルの特定列にのみ編集を行い、他の列はINPUTをそのまま出力したい。

awkで実現する方法を調べていたところ、下記サイトにたどり着きました。
サイトの通り行うことで実現できたのですが、構文で理解できてない点がございます。

参考にしたサイトはこちら

###該当のソースコード

awk

1awk 'BEGIN {FS=",";OFS=","}{$2="999000"}1' /tmp/test.file

###不明な点
該当のソースコードは、csvファイルの2列目のみ"9990000"に書き換えているのですが、
コード {$2="999000"}1'のカッコ外に記載されている"1"が、なぜ記載されているかが、調べてもわかりませんでした。
("1"を削除して実行すると正しく出力されないことは確認しています。)

上記の構文について、ご説明いただける方がいらっしゃいましたらよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

1は処理を行うかどうかの条件です。awkにおいて0以外の数字は真、0は偽ですので、1とだけ書かれていればすべての行に対して真、つまり後続の{}内の処理がすべての行に対して行われます。
また、後続の{}がない場合、{ print $0 }が省略されているものとみなします。

投稿2017/01/05 10:15

yunano

総合スコア841

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

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

sect_123

2017/01/05 10:47

早速のご回答ありがとうございました。 下記と同様ということで、理解しました。 BEGIN {FS=",";OFS=","} {$2="999000"} {print $0}
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問