以下のファイルがあります。列9の値は**につながります。
chrXV 234346 234546 snR81 + SNR81 chrXV 234357 0.0003015891774815342**0.131826816475 +
chrXV 234346 234546 snR81 + SNR81 chrXV 234385 0.0002208827994288481**0.0118547789578 +
chrXV 234346 234546 snR81 + SNR81 chrXV 234396 0.0001799579220002955**0.00583993781634 +
chrXV 234346 234546 snR81 + SNR81 chrXV 234410 0.003451057940295026**0.00352844797952 +
2つの値を別々の列として持つことができる出力が必要です。 awkでこれを行う方法。
これが私が望む出力です。出力の最初の行を表示します。
chrXV 234346 234546 snR81 + SNR81 chrXV 234357 0.0003015891774815342 0.131826816475 +
ベストアンサー1
人々がなぜcatを使ってファイルをawkにパイプするのかはわかりませんが、tr応答は1文字だけが別の文字に変換されるため、すべての文字*
はspace
.
シンプルなawkソリューション
awk -F"**" '$1=$1' OFS="\t" file
すべてのフィールド間のタブの場合
awk 'sub(/\*\*/," "){$1=$1}1' OFS="\t" file
まだ一つあります。
awk 'gsub(/(*| )+/,"\t")' file
sed コマンド
sed 's/[* ]\+/\t/g' file
trコマンド
tr -s '* ' '\t' < file