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

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

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

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コマンド

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

608閲覧

[Python or Linuxコマンド] ある行の一覧から、特定の文字列を含まない行のみを抽出したいです。

player31

総合スコア21

Linux

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

Ubuntu

Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

コマンド

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/03 13:52

Linuxサーバ内にあるテキストファイルに対して、Pythonを用いて、特定の文字列を含まない行のみを抽出したいです。

具体的には、以下の<sample.txt>に対して、特定の文字列(apple,cherry,pear)を含んでいない行のみを抽出し、表示させたいです。

<sample.txt> #1 watermelon.apple.momo #2 momo-momo.plum #3 pear.apple #4 cherrywatermelon_kumquat.banana #5 grape.grape.banana #6 apple_pear ・ ・ ・

python3

1import pandas as pd 2 3df = pd.read_csv("sample.txt") 4 5# ここで(apple,cherry,pear)を含んでいない行のみを抽出したい 6result = df.query(' == @x').index[0] 7 8print(result) 9

実際には「sample.txt」は100行程度あり、特定の文字列も20単語程度を考えており、随時追加や削除を行いたいと考えています。
どのようにすれば上手くいくのか、わかる方がいらっしゃいましたら、教えていただけたら幸いです。
また、そのもそもPythonを使うまでもなく、Linuxコマンドで簡単にできるか等も知りたいです。
宜しくお願い致します。

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

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

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

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

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

guest

回答3

0

grepコマンドで。

sh

1egrep -v 'apple|cherry|pear' sample.txt 2または 3grep -v 'apple\|cherry\|pear' sample.txt

投稿2020/02/03 15:06

otn

総合スコア84423

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

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

player31

2020/02/04 14:04

回答ありがとうございます。 shellだとこんなにも簡単にかけるんですね。 勉強になりました。
guest

0

ベストアンサー

pandasを使わない方が簡潔かと思います。
もっとも、この手のテキスト処理はシェル芸のほうが向いているかもしれません。

Python

1from io import StringIO 2 3# テストデータ 4s = """#1 watermelon.apple.momo 5#2 momo-momo.plum 6#3 pear.apple 7#4 cherrywatermelon_kumquat.banana 8#5 grape.grape.banana 9#6 apple_pear""" 10lines = StringIO(s).read().split('\n') 11 12ignores = ['apple','cherry','pear'] 13for line in lines: 14 if all([ig not in line for ig in ignores]): # ignoresのすべての文字列を含まない場合 15 print(line) 16 17#2 momo-momo.plum 18#5 grape.grape.banana

投稿2020/02/03 14:16

can110

総合スコア38233

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

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

player31

2020/02/04 14:05

回答ありがとうございます。 Pythonだとこんな感じでかけるんですね。 お陰様で、やりたいことができました!
guest

0

shで

bash

1cat sample.txt | grep -v apple | grep -v cherry | grep -v pear

投稿2020/02/03 14:06

ikapy

総合スコア1167

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

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

player31

2020/02/04 14:10

回答ありがとうございます。 大変勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問