"sn":"1$$$$12056597.3,2595585.69$$" のような文字列がある場合、awk を使用して "1$$$$" を分割するにはどうすればよいですか?
私は試した
**cat $filename | awk -F "\"1\$\$\$\$" '{ print $2 }'**
**cat $filename | awk -F "\"1$$$$" '{ print $2 }'**
しかし、すべて失敗しました
任意の数の $ 使用
echo '"1$$$$12056597.3,2595585.69$$"' | awk -F '"1[$]+' '{ print $2 }'
丁度4回使用
echo '"1$$$$12056597.3,2595585.69$$"' | awk -F '"1[$]{4}' '{ print $2 }'
シェル内のエスケープ文字に関する問題のデバッグを支援するために、シェルがエスケープ文字を解釈してシェル変数を置き換えた後に awk に渡される引数を出力する、組み込みのシェル コマンドセットを使用できます。
この場合、シェルは最初に \$ をプレーンな $ のエスケープとして解釈します。
set -x
echo '"1$$$$12056597.3,2595585.69$$"'|awk -F "\"1\$\$\$\$" '{ print $2 }'
+ echo '"1$$$$12056597.3,2595585.69$$"'
+ awk -F '"1$$$$' '{ print $2 }'
\$ を使用して \$ を awk にすることができますが、\$ は awk の正規表現ではとにかく $ として解釈されます。少なくとも awk はあなたに警告するのに十分です...
echo '"1$$$$12056597.3,2595585.69$$"'|awk -F "\"1\\$\\$\\$\\$" '{ print $2 }'
+ echo '"1$$$$12056597.3,2595585.69$$"'
+ awk -F '"1\$\$\$\$' '{ print $2 }'
awk: warning: escape sequence `\$' treated as plain `$'
でデバッグをオフにする
set +x
echo '"1$$$$12056597.3,2595585.69$$"' | awk -F '"1[$]+' '{ print $2 }' |sed 's/.\{3\}$//'
または、両方の浮動小数点数を分割したい場合:
echo '"1$$$$12056597.3,2595585.69$$"' | awk -F '"1[$]+' '{ print $2 }' |sed 's/.\{3\}$//' |awk 'BEGIN {FS=","};{print $1}'
と
echo '"1$$$$12056597.3,2595585.69$$"' | awk -F '"1[$]+' '{ print $2 }' |sed 's/.\{3\}$//' |awk 'BEGIN {FS=","};{print $2}'