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

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

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

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

コマンド

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

Q&A

3回答

891閲覧

cutコマンドを用いた文字の抽出

piko22

総合スコア8

Linux

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

コマンド

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

0グッド

1クリップ

投稿2020/06/03 17:04

実現したいこと

X.txt (約120MB) からcutコマンドの-c optionを用いて特定の範囲の文字を抽出する。

起きていてる問題

$ cut -c 45307-122131173 X.txt > Y.txt

上記のコマンドを実行したが、headで確認したところ中身は改行のみで文字が抽出されてこない。(Y.txtは約2MBでした。)

$ head Y.txt $

関係してくるかわからないのですが、X.txtの中身は「N」がしばらく連続し、それに続いてランダムな文字列となっています。上記に記載の抽出したい特定の範囲 45307-122131173 はこの連続した「N」とランダムな文字列にまたがっています。)

$ head X.txt NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN

原因が分かる方いらっしゃいましたら、ご教授のほどよろしくお願いいたします。

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

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

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

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

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

otn

2020/06/03 23:23

cut -b でどうなりますか?
guest

回答3

0

まず、 cut -c が今回の目的に合っていないのではないかと思います。
cut -c は以下のような動作をします。

$ cat a.txt apple orange grape $ cat a.txt | cut -c2-4 ppl ran rap

例えば、ファイルの10バイト目から5バイト欲しい場合は

$ cat a.txt | tail -c+10 | head -c5 nge g

のように headtail を組み合わせるのが良いと思います。

投稿2020/06/04 15:36

Toru3

総合スコア32

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

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

0

示されているheadの出力結果。改行のみが約2MB延々と続くY.txtが出来たという報告。考え合わせると、入力データは60文字ごとに改行が入ってるんじゃないですか? そうであればcutのこの位置指定は意味を成しませんね。

tr -d "\n" X.txt | cut -c 45307-122131173 > Y.txt

こんな感じでどうですか。

余りに元ファイルがでかすぎるとメモリ不足とかの問題が出るかもしれません。その場合はちょっと面倒だけど一行読んでは累積読み込み文字数をカウントするなどの処理が必要になるでしょう。

投稿2020/06/04 06:19

KojiDoi

総合スコア13671

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

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

anndonut

2020/06/04 08:55

45307-122131173という範囲はどういった意味を持ちますか?多分バイトで指定して切り出したいという意図があるのかと思いますけど。もしそうなら改行を@(など)に変換してcutし@を改行に戻すのがいいのかと思います。
guest

0

Linux Mint上でcutコマンドをいろいろいじめて見ましたがテキストファイルについては堅牢でした。「なので」適当な.mp3ファイルを入力してみたところ、改行だけのファイルができました。X.txtのなかにテキストで解釈できない部分が存在するものと思います。file X.txtと入力してASCII textと表示されない場合はクロです。

投稿2020/06/03 17:49

anndonut

総合スコア667

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

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

piko22

2020/06/04 01:52

file X.txtを実施したところ、ASCII textと出ました、、。もし他にもアイディアをお持ちでしたら教えてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問