テキストを置き換える必要がありますファイル2.txt到着ファイル1.txt5位と8位の間。 5番目と8番目の位置の間の文字でなければなりません。上記の場所の新しい文字に置き換える必要があり、残りの場所の文字は以前と同じでなければなりません。
ファイル1.txt:
abcd9876efghijklmno
abcd9676efghijklmno
abcd9886efghijklmno
abcd9976efghijklmno
ファイル2.txt:
1234
4321
6543
5678
予想出力:
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
私が試したコマンド
sed '/substr($0,5,4)/r File2.txt' File1.txt >file_new.txt
ベストアンサー1
組み合わせを使用する方が簡単かもしれません。paste+cut
$ paste -d'\0' <(cut -c1-4 File1.txt) File2.txt <(cut -c9- File1.txt)
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
-d'\0'
結合された入力を文字なしで入力できるように- また、見ることができます区切りなしでファイルを貼り付ける
<()
はいプロセスの交換cut -c1-4
各行の最初の4文字を提供します。cut -c9-
位置9から始まる各行のすべての文字を提供します。
別のアプローチは、以下を使用する慣用的な2つのファイル処理です。awk
$ awk 'NR==FNR{a[FNR]=$0; next} {print substr($0,1,4) a[FNR] substr($0,9)}' File2.txt File1.txt
abcd1234efghijklmno
abcd4321efghijklmno
abcd6543efghijklmno
abcd5678efghijklmno
NR==FNR{a[FNR]=$0; next}
行番号でキー付き配列File2.txt
にすべての行を格納します。a
print substr($0,1,4) a[FNR] substr($0,9)
必要な文字を抽出し、途中に行を挿入するためにsubstr
使用されます。File2.txt