いくつかの正規表現を理解するのに苦労しています。次のようなテキスト ファイルで、2 つのパイプ文字の間の特定のフィールドを検索しようとしています。
|nope|target|tree|
|target|nope|nah|
最初の行のみを返すには、grep でどのような正規表現を使用しますか? より具体的には、2番目のフィールドにある場合にのみ「ターゲット」を見つけます
いくつかの正規表現を理解するのに苦労しています。次のようなテキスト ファイルで、2 つのパイプ文字の間の特定のフィールドを検索しようとしています。
|nope|target|tree|
|target|nope|nah|
最初の行のみを返すには、grep でどのような正規表現を使用しますか? より具体的には、2番目のフィールドにある場合にのみ「ターゲット」を見つけます
2 番目のフィールドがターゲットである行を出力します。
kent$ echo "|nope|target|tree|
|target|nope|nah|"|awk -F'|' '$3=="target"'
|nope|target|tree|
質問は少し不明確ですが、私はあなたがこのようなものが欲しいと思います:
grep '|.*|target|.*|' my_file.txt
2 番目のフィールドを一致させるには:
grep "^|[^|]*|target|" file
結果:
|nope|target|tree|
説明:
^ # match start of line
| # a pipe symbol
[^|]* # anything not a pipe symbol any number of times
| # a pipe symbol
target # the word 'target'
| # a pipe symbol