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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Q&A

3回答

711閲覧

ファイル内の決まった位置にある数値の取得方法

dropoutcat

総合スコア0

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Linux

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

コマンド

コマンドとは特定のタスクを行う為に、コンピュータープログラムへ提示する指示文です。多くの場合、コマンドはShellやcmdようなコマンドラインインターフェイスに対する指示文を指します。

コマンドライン

コマンドライン(別名:Command Line Interface)は、ユーザに命令の入力を促す(プロンプト)文字列の表示を行い、すべての操作をキーボードを用いて文字列を打ち込む事でプログラムを走らせるユーザインターフェースです。

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

1グッド

1クリップ

投稿2020/09/11 07:38

編集2020/09/11 07:39

前提・実現したいこと

末尾から決まった行に存在する数字を取得してその部分だけを残したいです。
例えばテキストが以下のような内容で終わるとします(asdasdaが最終行)

aiueo 19
dwewerw
abcdefg 2134
4tdt5hydt
qwerty 114
fwfwefw

aiueo 3131
sdasdsa
abcdefg 213
dasdsada
qwerty 334
asdasda

最終-1行目、最終-3行目、最終-5行目、最終-8行目、最終-10行目、最終-12行目の数値だけを残したようなファイルを作成したいです。
この場合は

19,2134,114
3131,213,334

となって欲しいです。
Linuxではどのようなコマンドで実現可能でしょうか。

korisuya👍を押しています

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

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

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

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

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

guest

回答3

0

末尾からの行数指定で、数字というか2カラム目を抜き出すだけなら、tacを使って行を逆順にすると安易です。

sh

1tac | sed -n '2p;4p;6p;9p;11p;13p' | awk '{print $2}' | tac

投稿2020/09/11 12:41

otn

総合スコア84555

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

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

hidezzz

2020/09/13 02:41 編集

質問文に書かれている > 19,2134,114 > 3131,213,334 になるように処理を追加すると、 $ cat hoge.txt | tac | sed -n '2p;4p;6p;9p;11p;13p' | awk '{print $2}' | tac | xargs -n 3 | tr ' ' ',' という感じになるでしょうか。
otn

2020/09/13 04:07

3つずつなのか、空白行が関係するのかなど、謎なので、文章に書いてる部分だけ対応。
hidezzz

2020/09/13 04:24

了解しました。 空白行が区切りとなる仕様である可能性については思いつきませんでした。
guest

0

難しいのは、「最終行」がどこかは最後まで読んでみないと判別できないということで、tailやcutの組み合わせでも出来なくはありませんがひと工夫必要で中々ややこしいコードになると思います。

数字部分の抜き出しやカンマ区切りでの出力を含め、全部の要求を満たすとすると、私だったらperlのワンライナーを組みますね。

以下はあくまでイメージです。

perl -ane 'chomp; push(@x,$F[1]); /^asdasda$/ and last; END{map {push(@y, $x[$_])} (-13,-11,-9,-6,-4,-2); print join(",",@y),"\n"}' input.txt

投稿2020/09/11 08:49

KojiDoi

総合スコア13671

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

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

0

こんにちは。
###案1

  • tailコマンドでテキストファイルの特定行を取得できます。
  • sedやawkコマンドで目的の数字部分を取得できます。

cutコマンドも使えます。(追記)

上記をshell(もしくはCshell)スクリプトに記述する。

###案2
perlやpythonなどのスクリプト言語を使ってテキストを解析して目的の値を取得する。

Linux(UNIX)はテキスト文化なのでテキストを操作するコマンドは他にもいろいろあると思います。

投稿2020/09/11 07:49

編集2020/09/11 07:52
DreamTheater

総合スコア1095

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問