削除したい単一の:
とa'
の行があります。これにはawk
を使用します。私は使用してみました:
awk '{gsub ( "[:\\']","" ) ; print $0 }'
そして
awk '{gsub ( "[:\']","" ) ; print $0 }'
そして
awk '{gsub ( "[:']","" ) ; print $0 }'
それらのどれも動作しませんでしたが、エラーUnmatched ".
を返します。私が入れたとき
awk '{gsub ( "[:_]","" ) ; print $0 }'
動作し、すべての:
および_
文字を削除します。 '
文字を削除するにはどうすればよいですか?
次を使用できます。
単一引用符の8進コード:
[:\47]
二重引用符内の単一引用符ですが、その場合、特殊文字はシェルによって展開されます:
% print a\': | awk "sub(/[:']/, x)"
a
動的正規表現を使用しますが、このアプローチに関連するパフォーマンスへの影響があります。
% print a\': | awk -vrx="[:\\\']" 'sub(rx, x)'
a
tr
はこの目的のために作成されます
echo test\'\'\'\':::string | tr -d \':
teststring
$ echo test\'\'\'\':::string | awk '{gsub(/[:\47]*/,"");print $0}'
teststring
これは動作します:
awk '{gsub( "[:'\'']","" ); print}'
Bashでは、単一引用符で囲まれたリテラル内に単一引用符を挿入できません。使用する '"'"'
例えば。
最初 '
は現在のリテラルを閉じてから、"'"
は、単一引用符のみを含むリテラルと連結し、'
は、文字列リテラルを再度開きます。これも連結されます。
あなたが欲しいのは:
awk '{gsub ( "[:'"'"']","" ) ; print $0; }'
ssapkotaの代替手段も優れています('\''
)。
あなたがawkの使用に自分を制限している理由がわかりませんが、とにかく他のユーザーから多くの答えがあります。 sedを使用して「: '」を削除することもできます
sed 's/:\'//g'
これも目的に役立ちます。シンプルで複雑ではありません。
これも機能します:
awk '{gsub("\x27",""); print}'
最も単純なawk '{gsub(/\047|:/,"")};1'