タブ区切り記号

タブ区切り記号

私はこれが簡単だと思いますが、それを行う方法がわかりません。

想像する

、、、列を.csv含むファイルがあり、各列は次のように区切ります。id_usertextid_grouptabs

"123456789"        "Here's the field of the text, also contains comma"        "10"
"987456321"        "Here's the field of the text, also contains comma"        "10"
"123654789"        "Here's the field of the text, also contains comma"        "11"
"987456123"        "Here's the field of the text, also contains comma"        "11"

テキストを見つける方法は?

試みる

アッ

区切り文字を指定する方法を探していますprint $n。そうすることができれば、1つのオプションは次のとおりです。

$ awk -d '\t' '{print $2}' file.csv | sed -e 's/"//gp'

-dオプションの区切り文字はどこにあり、削除されますprintsed"

答え1

タブ区切り記号

切る

sedorは不要で、awk簡単な方法でcut行われます。

cut -f2 infile

アッ

awkを使用するには、パラメータまたはサフィックスを介して区切り-F文字FS=を提供する方法があります。

awk -F '\t' '{ print $2 }' infile

または:

awk '{ print $2 }' FS='\t' infile

すべての場合の出力:

"Here's the field of the text, also contains comma"
"Here's the field of the text, also contains comma"
"Here's the field of the text, also contains comma"
"Here's the field of the text, also contains comma"

引用区切り記号

ファイルに二重引用符が一貫している場合、つまりフィールドに二重引用符が含まれていない場合は、区切り文字として使用し、出力では使用しないことがあります。たとえば、次のようになります。

切る

cut -d\" -f4 infile

アッ

awk -F\" '{ print $4 }' infile

どちらの場合も出力:

Here's the field of the text, also contains comma
Here's the field of the text, also contains comma
Here's the field of the text, also contains comma
Here's the field of the text, also contains comma

答え2

grepPCRE()と組み合わせて使用​​できます-P

grep -Po '\s"\K[^"]+(?="\s)' file.txt
  • \s"後にスペースがある場合は一致し、一致を削除します"\K

  • [^"]+"2つの間で目的の部分を取得します。

  • (?="\s)"必須部分の後にスペース文字が続くことを確認する幅がゼロの肯定的な予測モードです。

例:

$ grep -Po '\s"\K[^"]+(?="\s)' file.txt 
Here's the field of the text, also contains comma
Here's the field of the text, also contains comma
Here's the field of the text, also contains comma
Here's the field of the text, also contains comma

答え3

tab区切り記号で指定

$ awk -F '\t' '{print $2}' file.csv

行って不要なものを持っていく"

$ awk -F '\t' '{print $2}' file.csv | sed 's/"//g'

他のオプションの使用awk -F

$ awk -F '"' '{print $4}' file.csv

答え4

あなたのsed部分は正しいです。awk -F '\t'以下を使用または使用できます。

awk 'BEGIN{FS="\t"} {print $2}' file.csv | sed 's/"//g'

または、sedを使用したくない場合は、最初のawkの出力を2番目のawkにパイプし、フィールド「区切り文字」として「」を使用してから2番目のフィールドを印刷できます。

awk 'BEGIN{FS="\t"} {print $2}' file.csv | awk -F "\"" '{print $2}'

関連情報