
入力する:
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