2017-12-08 9 views
1

フォーラムで問題に対して異なる解決方法を試しましたが、指定された区切り文字では機能しません%$%、 200以上の列を含むファイルからの列。

私は次のことを試してみました:

awk -F"%$%" '{print $1}' sample.txt > outfile.txt 
awk 'gsub("%$%",":")' sample.txt > outfile.txt 

答えて

1

シンボル$は正規表現で特殊文字なので、あなたが\とそれをエスケープする必要があり、また、リテラル文字列の特殊文字であるので、もう一度エスケープする必要があります。だから、

最後に我々が持っている、:

$ cat sample 
ghkjlj;lk%$%23e;k32poek%$%eqdje2oijd%$%xrgtdy5h 

$ awk -F'%\\$%' '{print $1}' sample 
ghkjlj;lk 
1

は関係なく-F (FS)またはgsub()、それは正規表現を期待していない、あなたは、文字クラスを使用するか、あなたの例では$のように、特別な意味を持つもの文字をエスケープのいずれかが必要です。

kent$ awk -F'%[$]%' '{print $1}' <<<"foo%$%bar%$%blah" 
foo 

あなただけの区切りを変更したい場合は、あなたがgsubOFSを使用して行うことができます。

kent$ awk -F'%[$]%' -v OFS=":" '$1=$1' <<<"foo%$%bar%$%blah" 
foo:bar:blah 
kent$ awk 'gsub(/%[$]%/,":")+1' <<<"foo%$%bar%$%blah" 
foo:bar:blah 
関連する問題