単一のターミナルコマンドを使用してテキストファイルに単語を追加します(エディターなし)


22

私はLinuxが初めてです。.conf開いているターミナルからのみファイルを編集する必要があり、テキストエディターは使用しません。つまり、開いている端末から設定ファイルに単語や文章を追加できますか?

例:command /home/.../file.conf -add 'abcd'23行目など。そして最後に、それを保存します。

コマンドのみを使用して、その構成ファイル内の特定の単語を検索し、その構成ファイルの次の行に新しいテキストを追加することは可能ですか?


1
sed助けに来ることができるように見えます。
nitishch

1
1つの質問をします。
アビナッシュラジ14年

回答:


39

私は通常、スクリプトをプログラミングしているときに、あなたが求めているのと同じことをプログラムで行うときにこの方法で行います。

echo "Hello you!" >> myfile.txt
echo "this is 2nd line text" >> file.txt
echo "last line!" >> file.txt

出来上がり!わかった。重要なのは、単にすべてを上書きするだけで>>、既存のファイルに新しい行を追加>することです。


迅速な返信ありがとうございます。しかし、.confファイルの23行目に3000ワード以上を順番に追加する必要があります。もっと簡単な方法はありますか?
user259060 14年

20

開いているターミナルから設定ファイルに単語や文を追加するには、sedを使用します。

sed -i '23iabcd' file.conf

23行目にテキストabcdをファイルに挿入しますfile.conf

-ifileに直接変更を行いますfile.conf

使用するawk場合:

awk -v n=23 -v s="abcd" 'NR == n {print s} {print}' file > file.conf

以下は、SearchPatternの後に1行追加します。

sed -i '/SearchPattern/aNew Text' SomeFile.txt

SearchPatternを含む各行の下に1行新しいテキストを挿入します。

2行を追加するには、a \を使用し、新しいテキストの入力中に改行を入力します。

 sed -i '/pattern/a \
line1 \
line2' inputfile

5

printfコマンドを使用することもできます。

ファイルに行を追加するには

$ printf "\nThis is a new line to your document" >> file.txt

ファイルを上書きするには

$ printf "This overwrites your file" > file.txt

0
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

ノート:

  • regexは正規表現(regexとも呼ばれます)であり、検索条件を定義します。正規表現は非常にカスタマイズ可能な検索を可能にし、awkが理解できる構文はマニュアルにあります。最も単純な場合-文字列を「そのまま」文字列で検索します-特殊文字の前にバックスラッシュを置くだけです(特殊文字のリストについてはマニュアルを参照してください)

使い方:

  • 開いてinputfile、入力行を読み取るための明確なoutputfileと出力ラインを書くためにそれを開きます
  • 各行に対して、ブロックを中括弧で実行します。
    • 行が正規表現と一致する場合、内容が追加された行を出力します
    • それ以外の場合は、まったく同じ行を出力します。

0

edコマンドを使用して自分の質問の解決策を見つけました

ed -s /home/.../abc.conf <<< $'23i\ntext\n.\nwq'

テキストには27行を含めることができます。テキストファイルから27行をコピーし、構成ファイルに27行を貼り付けることができます。ただしed、同じ構成ファイルにさらにテキストを追加するには、コマンドを同時に実行する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.