次のようにファイルの最初の項目を置き換えようとしますsed
。
sed -i s/he/He/ dummy.txt
最初の項目を置き換えるのではなく、すべての項目を置き換えます(何もない場合でも)/g
。
文書によると、最初の項目のみを交換する必要があります。
バージョンはsed
次のとおりです。
GNU sed version 4.1.5
私は何を逃したことがありませんか?それとも、他の実装が異なる動作をしますかsed
?
答え1
sed は入力を 1 行ずつ処理します。修飾子は、/g
1行のすべての項目を置き換えるのか、最初の項目だけを置き換えるのかに影響します。
echo hehe | sed s/h/H/
echo hehe | sed s/h/H/g
ファイルの最初の項目のみを置き換えるには、次のように使用します。
s/h/H/ # Replace.
ta # Go to a if s/// worked.
b # Otherwise, start the next cycle.
:a { n # Process the next line.
ba # Go to a.
}