sedが私のファイルを逆順に書くのはなぜですか?
old_file.txt
次のデータを含むテキストファイル()を読み取る必要があります。
ファイル内容old_file.txt
:
1.00
2.00
3.00
以下を含む2番目のファイルがあります。
ファイル内容new_file.txt
:
AAAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG
nth
カーソルをファイル行に移動しnew_file.txt
、次のようにすべての内容を挿入する必要がありますold_file.txt
。
私は必要です:
AAAA
BBBB
CCCC
1.00 <--
2.00 <--
3.00 <--
DDDD
EEEE
FFFF
GGGG
しかし、私は次のようになります。
私が得るもの:
AAAA
BBBB
CCCC
3.00 <--
2.00 <--
1.00 <--
DDDD
EEEE
FFFF
GGGG
これは私のコードです。
#!/bin/bash
line=3 # line that I need (exemple)
while read x
do
sed -i "${line}a\ $x" new_file.txt
done < old_file.txt
なぜ文が逆順で起こるのか分からない!
ベストアンサー1
これは、ループが1.00
after CCCC
、after 2.00
、CCCC
after3.00
に追加されるために発生しますCCCC
。
希望の注文を受け取るには私行(n + 1)の前に挿入してください$x
。しかし、以下を使用する場合、シェルループはまったく必要ありません。アル字型ファイルから直接読む:
sed -i "${line}"'r old_file.txt' new_file.txt