Unixを使用して2行目の先頭に文字列を追加する

Unixを使用して2行目の先頭に文字列を追加する

テキストファイルの2行目の先頭に文字列を追加したいと思います。たとえば、次のようになります。

1
2
3

次のようにする必要があります。

1
42
3

この問題を処理する方法についてのアイデアはありますか?

答え1

sedを使用してこれを実行できます。 GNU sedがある場合は、-i次のように変更できます。

sed -i -e '2s/^/4/' source

sedこれはin-place()を修正し、line()の先頭をaと一致させるために-i正規表現replacement()を実行するように指示します。これは行番号でのみ行われます。これはすべて次のファイルで行われます。s/^/4/^42source

答え2

POSIX 1:

printf '\n4' | paste -d'\0' - file

答え3

ExモードでVimを使用できます。

ex -sc '2s/^/4/|x' file
  1. 22行目の選択

  2. s変える

  3. x保存して閉じる

答え4

強制awkソリューション:

awk -v prepend="<your-text-here>" 'NR==2{print prepend $0;next};1' file

または提案された環境変数ソリューションおじさん次のコメント:

prepend="<your-text-here>" awk 'NR==2{print ENVIRON["prepend"] $0;next};1' file
  • -v prepend=...呼び出し時に変数にawk指定された値を割り当てますprepend
  • NR==22行目に次のコマンドを適用します。
  • print prepend $0nextこの行に追加する前に、次の行に移動することを忘れないでください。
  • 最後は、行全体を印刷するための1ショートカットです。{print $0}

関連情報