データが「file」という名前のファイルにあると仮定します。
sed -i 's/^\(.\{27\}\)\(.\{26\}\)\(.*\)/\1\n\2\n\3/g' file
sed はテキスト処理用の非常に強力なツールですが、最も使いやすいとは言えません (ただし、このような例を作成する場合は非常に簡単です)。ここに魔法があります:
"-i" は、単一引用符で囲まれた "do this stuff for me" のフラグです。スラッシュで区切られた 4 つの部分で構成される命令があります: 1. コマンド: "s" - 置換 2. パターン: 変更したいもの 3.期待される結果: どのように表示したいか 4. 範囲: "g" - グローバル
パターンは
\(.\{27\}\)\(.\{26\}\)\(.*\)
これは、「行の最初の 27 文字のグループを作成し、次の 26 文字の別のグループを作成し、その行の残りのすべての文字の最初のグループを作成する」ことを意味します。
期待される結果は
\1\n\2\n\3
これは、「グループ 1 を貼り付け、新しい行を貼り付け、グループ 2 を貼り付け、新しい行を貼り付け、グループ 3 を貼り付け」という意味です。
より明確にするために、スクリプトに入れることができます:
#!/bin/bash
COLUMN1=27
COLUMN2=26
FILENAME="file"
sed -i "s/^\(.\{$COLUMN1\}\)\(.\{$COLUMN2\}\)\(.*\)/\1\n\2\n\3/g" file
exit 0
スクリプトで任意のファイル エディター (私は vim を使用します。他のオプションは emacs、nano、kwrite、kate、geany、gedit など) を開いて、上記のコードを貼り付けます。保存し、エディターを閉じて発行します
chmod +x script
それを実行できるようにします。スクリプトを呼び出すには
./script
これで、スクリプトに引数を提供し、「ファイル」が存在するかどうかを確認し、さらにブレークポイントを追加できます...しかし、それは別の話です。
次に、awk などの別のツールを使用できます (これを強くお勧めしますが、vim で記述するときは通常正規表現を使用し、sed は awk よりも vim に似ているため、より快適に使用できます)。
もっと読む:
http://www.brunolinux.com/02-The_Terminal/Find_and%20Replace_with_Sed.html
http://www.grymoire.com/Unix/Sed.html
http://www.hcs.harvard.edu/~dholland/computers/awk.html
http://www.regular-expressions.info/