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

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

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

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Linux

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

AWK

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

Q&A

解決済

1回答

981閲覧

awk,Perlでのテキスト処理

doc1999

総合スコア3

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Linux

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

AWK

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

0グッド

1クリップ

投稿2020/06/04 09:00

編集2020/06/04 09:02

■実現したいこと

以下の様なテキストファイルがある場合にawkのワンライナー、またはPerlで表示結果の様に表示させたいです。
色々試したのですがうまくいかずにお力添え頂ければ幸いです。

---textfile----

int A
des A-1
test1
test2
test3
!
int B
des B-1
test1
test2
!
int C
des C-1
test1

---表示結果---

A A-1
B B-1
C C-1

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

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

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

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

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

guest

回答1

0

ベストアンサー

レコード区切りが"\n!\n"なので、

sh

1awk -v RS="\n!\n" '{print $2,$4}'

色々試したのですがうまくいかず

その色々試したことをちゃんと質問に書きましょうというのが良く指摘されている追記依頼です。

投稿2020/06/04 09:13

otn

総合スコア85901

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

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

doc1999

2020/06/04 09:24 編集

ご回答ありがとうございます。 新しい使い方を知りました。 私の環境では少しエラーになりましたが第一歩進みました。 [localhost test]$ cat aaa | awk -v RS="\n!\n" '{print $2,$4}' -bash: !\n": event not found [localhost test]$ cat aaa | awk -v RS="\n\!\n" '{print $2,$4}' awk: 警告: エスケープシーケンス `\!' は `!' と同等に扱われます A A-1 B B-1 C C-1 [localhost test]$
ikapy

2020/06/04 09:32

なるほど、RS(レコードセパレーター)を"\n!\n"にして、RSまでの2番目、4番目をprintするのですね。感心しました。最後は、!で終わっていないのでどうかなと思って実際に実行したらうまく行きました。awk賢い。ちなみに、私のcygwinでは、!がヒストリーと解釈されたので、RS="\n\!\n"としてうまくいきました。
otn

2020/06/04 10:17

> -bash: !\n": event not found あ、スクリプトにせずにワンライナー打ち込みでしたね。失礼しました。 ダブルクォートじゃなくシングルクォートにしてください。
doc1999

2020/06/04 11:37

>ダブルクォートじゃなくシングルクォートにしてください。 誠にありがとうございます! シングルクォートにした所、エラーも出なくなりました! 大変勉強になりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問