
テキストファイルの指定された行の先頭に文字(#)を挿入する必要があります。
入力例:
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