textファイルの、4で割って2余る行の文字列を、左から1つずつ短くしたファイルを、for文とawkで作ろうとしています。
L001 ABCDEFGHIJ +++ ABC L002 KLMNOPQRST —- KLM L003 UVWXYZABCD +-+ UVW L004 EFGHIJKLMN -+- EFG
作りたいファイル
sampl1e.txt
1L001 2BCDEFGHIJ 3+++ 4ABC 5L002 6LMNOPQRST 7—- 8KLM 9L003 10VWXYZABCD 11+-+ 12UVW 13L004 14FGHIJKLMN 15-+- 16EFG
sample2.txt
1L001 2CDEFGHIJ 3+++ 4ABC 5L002 6MNOPQRST 7—- 8KLM 9L003 10WXYZABCD 11+-+ 12UVW 13L004 14GHIJKLMN 15-+- 16EFG
以下、sample5.txtまで。
作成中のコマンド
for ((i=1 ; i<6 ; i++ )) do awk '{if (NR%4==2) {$1=substr($1, ${i}+1);print} else {print$0}}' sample.txt > sample${i}.txt done
うまくゆかない点 substr()の中のiをうまく表現できません。
${i} { でsyntax error, [i], <i>, {{i}}も同様
$(i) $(i)+1 を、1と認識 sample1.txtからsample5.txtまで、全て元と同じファイルができます。
awkのフィールドを表す$1などと、iが変数であることを表す${i}が重なってしまい、よくない文だとは思うのですが、解決法がありましたら、教えていただきたく思います。
環境は、MacOS10.13.6もしくは10.15.7のターミナル,Bash 5.1, awkは、GNU Awk 5.1.1です。
どうぞよろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/09 01:32