テキストファイルの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/
^
4
2
source
答え2
POSIX 1:
printf '\n4' | paste -d'\0' - file
答え3
ExモードでVimを使用できます。
ex -sc '2s/^/4/|x' file
2
2行目の選択s
変える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==2
2行目に次のコマンドを適用します。print prepend $0
next
この行に追加する前に、次の行に移動することを忘れないでください。- 最後は、行全体を印刷するための
1
ショートカットです。{print $0}