ファイルの指定された行の先頭に文字を挿入します。

ファイルの指定された行の先頭に文字を挿入します。

テキストファイルの指定された行の先頭に文字(#)を挿入する必要があります。

入力例:

Hellow1
Hellow2
Hellow3

希望の出力

Hellow1
#Hellow2
Hellow3

答え1

#単語で始まる行にaを挿入するには、次のようにしHellow2ますsed

sed '/^Hellow2/ s/./#&/' input.txt >output.txt

#テキストの2行目の先頭にaを挿入するには、次のようにしますsed

sed '2 s/./#&/' input.txt >output.txt

&パターンと一致するものに置き換えられます。

sed -i私はあなたが何を使用しているのかわからず、ほとんどのsed実装はsedフラグを処理するために互換性のない方法を使用しているので(その場で編集)使用を避けました。sed -i(所定の位置で編集)を使用して移植性を達成するには?)。

代わりに上記のように置き換えます。

mv output.txt input.txt

元のデータを結果に置き換えたい場合。また、結果が正しいことを確認する機会も提供されます。

以下と同じawk

awk '/^Hellow2/ { $0 = "#" $0 }; 1' input.txt >output.txt

awk 'NR == 2 { $0 = "#" $0 }; 1' input.txt >output.txt

答え2

あなたの質問は不明です。特定のテキストにコメントを付けたいとしましょう。

sed -i.bak 's/^\(Hellow2\)$/#\1/'

これは、文字列 "Hellow2"に正確に一致するすべての行を内部置換を実行し、それを#の後に一致する行に置き換えます。

答え3

s特定の行にコマンドを適用する一般的なパターンは、0、1、または2つのアドレスを表すこと[2addr]s... です。2addrつまり、パターンに一致する行の前に#を挿入したい場合:

sed -e '/pattern/s/^/#/'

オンラインに変更するには$n:

sed -e "${n}s/^/#/"  # (This requires that $n be a well formatted number)

$n 行の範囲を $m まで一致させるには、次のようにします。

sed -e "${n},${m}s/^/#/"  # $n and $m must be well formed numbers.  eg '2'

pattern1一致する行と「pattern2」と一致する行の間のすべての行を一致させるには、次の手順を実行します。

sed -e '/pattern1/,/pattern2/s/^/#/' 

答え4

あなたはこれを行うことができますawk

awk '{if ($0 == "Hellow2") print "#"$0; else print $0}' yourfile > outputfile

関連情報