行を2つの列に変換

行を2つの列に変換

入力する:

IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal

出力:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal
#                          ^
#                space instead of underscore

上記の行を2つの列に変換するにはどうすればよいですか(2つの間のアンダースコアを削除)。最初の単語の長さは固定されていますIN22FDX_S1P_WWWWBBBBMMMCCCC

答え1

最初の列のサイズが固定されている場合

sed 's/./ /28'

28番目の文字を空白に置き換えます。

データがファイルに保存されていると仮定すると、sedを使用してその場所で編集できます。

sed -i.bak 's/./ /28' input_file

.bak私が追加したオプションに注意してください-i。これは、sedにinput_file.bak提供されたサフィックスを使用してバックアップファイルを作成するように指示します。サフィックスはオプションです。

答え2

牛に似た一種の栄養cut解決策:

s="IN22FDX_S1P_WWWWBBBBMMMCCCC_ffg_pre_0.59_0_.72_-40_nominal"
cut -c 1-27,29- --output-delimiter=' ' <<<"$s"
  • -c- キャラクター選択

出力:

IN22FDX_S1P_WWWWBBBBMMMCCCC ffg_pre_0.59_0_.72_-40_nominal

関連情報