Komut satırını kullanarak belirli satırları yorumlamanın / yorumlamanın en basit yolu


37

Komut satırını kullanarak bir shell / config / ruby ​​betiğini yorumlamanın / yorumlamanın bir yolu var mı?

Örneğin:

$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf

bu , çevrimiçi olarak #oturum açma işaretini ekler veya kaldırır . Normalde kullanıyorum , ancak bu çizgilerin içeriğini bilmeli ve daha sonra bir bul-değiştir işlemi yapmalıyım ve bu, birden fazla iğne olduğunda yanlış bir sonuç verecektir (ve biz sadece N-inci değerini değiştirmek istiyoruz. bir).bla.conf1418sed


1
Başlıktaki Bu Q bir A yoktur kod uncommenting çoklu hatları, VI ya da vim kullanılarak, satır numaraları ile belirtilen Şekil kullanılarak bu iş için pek çok yöntem sed, perlTerdon göre, vb Özellikle A!
slm

Yanıtlar:


46

Bla.conf'un 2'den 4'e kadar olan satırlarına yorum yapmak için:

sed -i '2,4 s/^/#/' bla.conf

İstediğiniz komutu yapmak için, yukarıdakileri comment adında bir kabuk betiğine koymanız yeterlidir:

#!/bin/sh
sed -i "$1"' s/^/#/' "$2"

Bu komut dosyası, sizinkiyle aynı olup, ilk ve son satırların kısa çizgi yerine virgülle ayrılması haricinde kullanılır. Örneğin:

comment 2,4 bla.conf

Bir uncomment komutu benzer şekilde oluşturulabilir.

Gelişmiş özellik

sed'nin çizgi seçimi oldukça güçlü. Sayılara göre ilk ve son satırları belirlemeye ek olarak, bunları bir regex ile belirtmek de mümkündür. Yani, içeren birinden tüm hatları komuta istiyorsanız foobirine içeren için barkullanın:

comment '/foo/,/bar/' bla.conf

BSD (OSX) Sistemleri

BSD sed ile, -iseçenek sadece boş bir dize olsa bile bir argüman gerektirir. Böylece, örneğin, yukarıdaki üst komutu ile değiştirin:

sed -i '' '2,4 s/^/#/' bla.conf

Ve komut dosyasındaki komutu şu şekilde değiştirin:

sed -i '' "$1"' s/^/#/' "$2"

1
Çift misiniz 'sonra -iopsiyon İRADİ? Onlara ihtiyaç yoktu.
raphinesse


2

Vim'i Ex modunda kullanabilirsiniz:

ex -sc 'g/^\s*[^#]/s/^/#/' -cx bla.conf
ex -sc 'g/^\s*#/s/#//' -cx bla.conf
  1. g küresel regex

  2. s vekil

  3. x kaydet ve kapat


2

Projelerinizde tekrar kullanmak için fonksiyonlarla bir bash_file oluşturabilirsiniz.

#!/bin/bash

# your target file
CONFIG=./config.txt

# comment target
comment() {
  sed -i '' "s/^$1/#$1/" $CONFIG
}

# comment target
uncomment() {
  echo $1
  sed -i '' "s/^#$1/$1/" $CONFIG
}


# Use it so:
uncomment enable_uart
comment arm_freq
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.