とsiml - CSVファイル:SED、AWKまたは何bashので、私は「私にはわからないテキスト」と「一部」を取得する必要がありプロセス私はこのようなファイルましたAWK
"text I don't know" command other "text"
"some" different text "type"
をツール、別のコマンドにパイプされます。
ヒント?
とsiml - CSVファイル:SED、AWKまたは何bashので、私は「私にはわからないテキスト」と「一部」を取得する必要がありプロセス私はこのようなファイルましたAWK
"text I don't know" command other "text"
"some" different text "type"
をツール、別のコマンドにパイプされます。
ヒント?
これは単純すぎるようです。これはあなたがawkを初めて使うかもしれないことを意味します。どちらが完璧に受け入れられるか、あなたの質問に間違いがあります。私はその元を願っています。
あなたが求めるものは次のとおりです。フィールドセパレータを "-F\"
"(エスケープ "with")に設定し、2番目のフィールドを印刷します。最初は "、または何も表示されません。パイプと最後の行を入れて、必要な処理を実行できます。
awk -F\" '{print FS$2FS}' inputFile.txt
は "いくつかの"
FSは
sed 's/^\("[^"]*"\).*/\1/'
フィールドセパレーターである "テキスト私は知りません" 210
これは、余分なマテリアルを削除する簡単な二重引用符を含む行を扱います。変更されていない行はすべて通過します。
あなたは非マッチした行をドロップしたい場合は、:それは一致を見つけたとき
sed -n '/^\("[^"]*"\).*/s//\1/p'
これがデフォルトとプリントで印刷されません。次のようなデータフィールドに対処する必要がある場合
:
"He said, ""It's horrid""" and he meant it!
あなたはかなり難しい仕事をしなければなりません。 sed
が拡張正規表現またはPCRE(Perl互換正規表現)をサポートしている場合は、それを実行できます。そうでない場合は、代わりにawk
を使用してください。
"
が出力の一部であるかどうかはわかりません。私が間違っていると、それを出力に追加することは問題ではないはずです(@ Jonathan-Lefflerの回答が非常に良いので、意図的に左のsed
に残っています)
最初の文字として"
から完璧な解決策が出力されますが、それは簡単です。純粋なbashのを使用して
cut -d\" -f1-2 input
ソリューション、awkを使用してIFS
#!/bin/bash
IFS='"'
while read -ra LINE;
do
echo ${LINE[1]}
done < input
ソリューション、および"
$ awk -F\" '{print $2}' input
、最終的にはPerlでのものに区切り文字を変更するには-F
フラグの説明については5.1 Bourne Shell Variablesを参照してください。-a
は自動分割モードをオンにします - perlは空白の入力行を自動的に@F
配列に分割します。 -F
は、-aと組み合わせて使用され、行を分割する区切り文字を選択します。
perl -F\" -lane 'print $F[1]' input
ファイルから小さな例を挙げてください。また、この宿題はありますか? –