フォーラムで問題に対して異なる解決方法を試しましたが、指定された区切り文字では機能しません%$%
、 200以上の列を含むファイルからの列。
私は次のことを試してみました:
awk -F"%$%" '{print $1}' sample.txt > outfile.txt
awk 'gsub("%$%",":")' sample.txt > outfile.txt
フォーラムで問題に対して異なる解決方法を試しましたが、指定された区切り文字では機能しません%$%
、 200以上の列を含むファイルからの列。
私は次のことを試してみました:
awk -F"%$%" '{print $1}' sample.txt > outfile.txt
awk 'gsub("%$%",":")' sample.txt > outfile.txt
シンボル$
は正規表現で特殊文字なので、あなたが\
とそれをエスケープする必要があり、また、リテラル文字列の特殊文字であるので、もう一度エスケープする必要があります。だから、
最後に我々が持っている、:
$ cat sample
ghkjlj;lk%$%23e;k32poek%$%eqdje2oijd%$%xrgtdy5h
$ awk -F'%\\$%' '{print $1}' sample
ghkjlj;lk
は関係なく-F (FS)
またはgsub()
、それは正規表現を期待していない、あなたは、文字クラスを使用するか、あなたの例では$
のように、特別な意味を持つもの文字をエスケープのいずれかが必要です。
kent$ awk -F'%[$]%' '{print $1}' <<<"foo%$%bar%$%blah"
foo
あなただけの区切りを変更したい場合は、あなたがgsub
やOFS
を使用して行うことができます。
kent$ awk -F'%[$]%' -v OFS=":" '$1=$1' <<<"foo%$%bar%$%blah"
foo:bar:blah
kent$ awk 'gsub(/%[$]%/,":")+1' <<<"foo%$%bar%$%blah"
foo:bar:blah