2

テキストファイルの指定された列に単語が含まれている場合に、その行を抽出したいと思います。ワンライナーのUNIXコマンドでそれを行うにはどうすればよいですか?たぶん、、、、、いくつかcatのピプルか何かでechocutgrep

この形式で表示されたテキストファイルがあります

#SentenceID<tab>Sentence1<tab>Sentence2<tab>Other_unknown_number_of_columns<tab> ...

テキストファイルの例は次のようになります。

021348  this is the english sentence with coach .   c'est la phrase française avec l'entraîneur .   And then there are several nonsense columns like these  .
923458  this is a another english sentence without the word .   c'est une phrase d'une autre anglais sans le bus mot .  whatever foo bar    nonsense columns    2134234 $%^&

探している単語coachが2列目にある場合、コマンドは出力されます。

021348  this is the english sentence with coach .   c'est la phrase française avec l'entraîneur .   And then there are several nonsense columns like these  .

私はPython自体でそれを行うことができますが、UNIXコマンドまたは何かワンライナーを探しています:

outfile = open('out.txt')
for line in open('in.txt'):
  if "coach" in line.split():
    print>>outfile, line
4

2 に答える 2

5

これはどうですか?

awk -F'\t' '{if($2 ~ "coach") print} your_file
  • -F'\t'->区切り文字をタブにします。
  • $2 ~ "coach"->2番目のフィールドで「コーチ」を探します。
  • print $0またはprint->行全体を印刷します。

編集

sudo_Oは、さらに短い次のことを提案しています。

awk -F'\t' '$2~/coach/' file
于 2013-03-26T10:23:48.067 に答える
1

この種のニーズには、常にawkを使用します。

awk -F'\ t''$ 2〜 / Coach / {print $ 0;}' <textFile

$ xのすべての列にアクセスでき、$0には行全体が含まれます。テストは正規表現を使用して行われ、この場合は非常に単純なので、必要がさらに複雑になった場合は非常に強力です。

于 2013-03-26T10:34:43.227 に答える