Yorum satırlarını şanssız koddan kaldırmaya çalışıyor


0

Yorum yapılan tüm satırları sed ile koddan kaldırmaya çalışıyor:

1) /* ... */ve/* \n \n \n */

İçinde ne olduğunu göstermek için bu yapıyı kullanmaya çalıştım

sed -n '/^\/\*/,/\*\//!p'

Ancak farklı satırlar arasındakileri gizliyor gibi görünüyor ve satır içi atlıyor /* .... */

Demek istediğim burada çalışıyor:

/******** 
This readme is intented ...
......
....
....
************/

Ancak burada satır içi çalışmıyor:

/* Just a small bug */

İlk bulunanı alır ve bir sonraki satırda /*daha fazla aramaya */devam eder:

/* Just a small bug */
code
code
code
/*****
To sum up this shows us...
...
...
...
...
******/

SO TÜM KODU ALTINDA "/ * Sadece küçük bir hata * /" gizleniyor :( ve bunu çok özlüyorum:

code
code
code

2) // satır içi: önce http: // & https: // hariç, sonra ise dahil

Ayrıca dizeleri ve içerdiği dizeleri de silmeye çalışıyorum //:

sed 's/\/\/.*//'

//satırın başındayken yalnızca bu uygulamada başarılı olan :

sed 's/^\/\/.*//'

ancak sonunda http://ve gibi satır içi bağlantıları kaldırır.https://

code
code https://www.sample.com/abc     // include this URL
code https://www.sample.com/abc     // exclude this URL but leave alow https://anothersample.com/xyz
code

Onları araştıran http://ve https://bunları yok sayan sed desenleri aramaya çalıştım , daha sonra satır içi arama yapın //ve ardından her şeyi siler (eğer sonralarsa http / https'i yok sayarak //) ancak şanssız:

Belki birisinin güzel bir fikri vardır, harika olurdu, yine de teşekkürler!

Yanıtlar:


3

Bu küçük metin dosyasını yarattım

/* one line comment */

some
multiple
code
here

/*****
multiple
line
comment
*****/

some code http://somelink
some code // some one line comment

Bu küçük test dosyası için, bu komut sizin belirttiğiniz tüm yorumları kaldırmanız için çalışır.

cat comments.txt | sed -n '/^\/\*.*\*\//!p' | sed -n '/ \/\/.*/!p' | sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d'

Bu komut bunu yapıyor:

  1. sed -n '/^\/\*.*\*\//!p': /* one line comment */Test dosyasındaki gibi tüm satır açıklamalarını kaldırır

  2. sed -n '/ \/\/.*/!p': Gibi bir satır yorumu kaldırır // some one line comment, ancak http://bağlantıları tutar Bu, bu bölümdeki beyaz boşluk nedeniyle yapılabilir / \/\/. Bence bunu değiştirebilirsin./\s\/\/

  3. sed 's|/\*|\n&|g;s|*/|&\n|g' | sed '/\/\*/,/*\//d': Örnekteki gibi tüm çoklu yorum satırlarını kaldırın, ancak kodu saklar.

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.