web-dev-qa-db-ja.com

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

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

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

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

19
user259060

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

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

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

34
Faron

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

sed -i '23iabcd' file.conf

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

-iは、ファイル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行を追加するには、\を使用して、新しいテキストを入力しながら改行を入力します。

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

printfコマンドも使用できます。

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

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

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

$ printf "This overwrites your file" > file.txt
4
rafaelbattesti
awk '{if ($1 ~ /regex/) print $1 "content to be added"; else print $1}' < inputfile > outputfile

ノート:

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

使い方:

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

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

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

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

0
user259060