1

基本的に、私がやろうとしているのは、A.txt から 1 行目から 4 行目を移動し
、B.txt の 5 行目から 8 行目をそれらに置き換えることです。
最初の 4 行を sed で取得する方法はわかりましたが、
それらを「送信」して 2 番目の txt ファイルの行を置き換える方法がわかりません。

cat A.txt
1 a
2 b
3 c
4 d
5 e


cat B.txt
one
two
three
four
five
six
seven
eigh
nine

結果

one
two
three
four
1 a
2 b
3 c
4 d
nine
4

4 に答える 4

2

これはうまくいくかもしれません(GNU sed):

sed -i -e '5,8R a.txt' -e '5,8d' b.txt
于 2013-11-05T12:36:24.167 に答える
2

あなたの例では、この awk ワンライナーも機能します:

awk 'NR>4&&NR<9{getline $0<"a.txt"}7' b.txt

これにより、期待される出力が出力されます。b.txt に保存したい場合は、リダイレクトを試す必要があります。

于 2013-11-05T12:48:08.253 に答える
1

これawkは次のことを行う必要があります。

awk 'FNR==NR {a[NR]=$0;next} FNR>=5 && FNR<=8 {$0=a[FNR-4]}1' A.txt B.txt > tmp && mv tmp B.txt

の行をThenA.txtという名前の配列に格納します。a
行番号が次の範囲内である場合B.txt、配列の情報を使用して値58置き換えますa
。結果は一時ファイルに格納され、tmp次に移動されます。B.txt

于 2013-11-05T12:11:05.477 に答える