最初の区切りフィールドにのみ/
or'
または-
orを含む行を削除する方法は?.
|
- 試したコード:
sed 's/^\.\d; /^\-/d; /^\//d' file > file_out
- 入力例:
/|98374| /trust|q83129| //|392720| //cust|23892| .|9374| .abcd|28374| '|238674| 'hcsu|3810| -|327492| -abcde|9837|
- 予想出力:
.abcd|28374| /trust|q83129| //cust|23892| 'hcsu|3810| -abcde|9837|
ベストアンサー1
"Force"ベースのawk
ソリューション :)
awk -F'|' '$1 !~ /^[\/'\''.-]+$/' input.txt
これにより、フィールド区切り文字がに設定され、|
条件が満たされた場合にのみ印刷されます。「最初のフィールド()は正規表現()$1
と一致しません。!~
/
'
.
-
^[/'.-]+$
実現しました。
awk
プログラムを一重引用符()で囲む必要があるため、これを表す構文は少し複雑です。' ... '
それ以外の場合、シェルはその文$1
に到達する前と同様に文を解釈しますawk
。したがって、文字リストは、'
一重引用符の「中断」(最初のもの)、エスケープされたリテラル一重引用符(\'
)、一重引用符プログラムの連続で構成されますawk
。
または、読みやすくすることもできます。引用符付き文字列、引用符付き文字列、および他の引用符付き文字列を連結してプログラムを作成しますawk
。'...'
"..."
'...'
awk -F'|' '$1 !~ /^'"[\/'.-]"'+$/' input.txt