列1 | 列2 |
---|---|
1 | a |
1 | b |
2 | c |
2 | d |
3 | e |
3 | f |
result.tsv
linux
1cat result.tsv | awk '{if($1==/(1|2)/) print$0}' 2
macのterminalで上のような処理を行うと、
1 a
1 b
とだけ表示されます。
1 a
1 b
2 c
2 d
正規表記を用いてこのように表示させたいのですが、どうすれば良いのでしょうか。

回答3件
あなたの回答
tips
プレビュー
Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。
if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。
AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。
Terminalは、Apple社のmacOSに標準で付属しているUNIX端末エミュレータ。UNIXコマンドによってMacの操作および設定を行うことができます。
if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。
Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。
正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。
AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。
0グッド
0クリップ
投稿2020/09/04 12:19
編集2020/09/04 13:00列1 | 列2 |
---|---|
1 | a |
1 | b |
2 | c |
2 | d |
3 | e |
3 | f |
result.tsv
linux
1cat result.tsv | awk '{if($1==/(1|2)/) print$0}' 2
macのterminalで上のような処理を行うと、
1 a
1 b
とだけ表示されます。
1 a
1 b
2 c
2 d
正規表記を用いてこのように表示させたいのですが、どうすれば良いのでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
いやいや、もっと簡単な話ですよ。
[user@host] ~/programing/shell_work]$ cat awktest.awk
1 a
1 b
2 c
2 d
3 e
3 f
[user@host] ~/programing/shell_work]
[user@host] ~/programing/shell_work]$ awk '/1|2/{print}' awktest.awk
1 a
1 b
2 c
2 d
[user@host]
投稿2020/09/04 12:57
編集2020/09/04 13:01総合スコア923
0
質問記載のコードではifの条件部の閉じ括弧()
)がないのでエラーになりますね。
また、1カラム目が2桁以上の可能性があるなら(11
とか22
とかを除外したいなら)
こんな感じですかね。
if文でやるなら
cat result.tsv | awk '{if ($1 ~ /^(1|2)$/) {print $0}}'
これでも可
cat result.tsv | awk '/^(1|2)\s/{print $0}'
※print
を省略してこれでも可
cat result.tsv | awk '/^(1|2)\s/'
解決済みで蛇足ですが実行結果追記
bash
1$ cat result.tsv 21 a 31 b 42 c 52 d 63 e 73 f 819 aa 929 cc 1091 xx 1192 yy 12$ cat result.tsv | awk '{if ($1 ~ /^(1|2)$/) {print $0}}' 131 a 141 b 152 c 162 d 17$ cat result.tsv | awk '/^(1|2)\s/{print $0}' 181 a 191 b 202 c 212 d 22$ cat result.tsv | awk '/^(1|2)\s/' 231 a 241 b 252 c 262 d
投稿2020/09/04 12:34
編集2020/09/04 13:14総合スコア7918
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
ベストアンサー
正規表現マッチの演算子は、==
じゃなくて~
です。
投稿2020/09/04 12:23
総合スコア86363
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 13:07
2020/09/04 13:12