हटाएं, मैं एक कीवर्ड देना चाहता हूं, यह लाइन ढूंढें जहां यह कीवर्ड फ़ाइल में एपियर करता है और पूरी लाइन मिटा देता है।बैश - किसी फ़ाइल में कोई कीवर्ड ढूंढें और उसकी लाइन
यह मैं क्या मिल गया है, लेकिन यह एकदम सही ढंग से काम नहीं कर रहा:
KEYWORD='domain.com'
cat /etc/hosts | grep -v "$KEYWORD" > /etc/hosts
अद्यतन
यह वही मेरे लिए काम किया है:
sed -i_bak -e '/domain\.com/d' /etc/hosts
हालांकि, क्योंकि मेरे पास "domain.com" के साथ दो पंक्तियां थीं, क्या केवल उस पंक्ति को मिटाने के लिए sed कहने का एक तरीका है जहां सटीक कीवा है ord "domain.com" प्रकट होता है
यह/etc/hosts की मूल सामग्री है:
127.0.0.1 localhost localhost.localdomain
222.111.22.222 hvn.domain.com
222.111.22.222 domain.com
यहाँ कैसे यह आदेश sed -i_bak -e '/domain\.com/d' /etc/hosts
के बाद अंततः है:
127.0.0.1 localhost localhost.localdomain
मैं sed -i_bak -e '/\<namourphoto\.com\.br\>/d' ~/Desktop/hosts
कोशिश की, लेकिन यह काम नहीं किया।
D=domain.com
DOMAIN=`echo "$D" | sed 's/\./\\\\./g'`
sed -i_bak -e "/[\t]$DOMAIN/d" /etc/hosts
ध्यान दें कि:
मैं
निष्कर्ष
इस कोड के साथ मैं (मदद ठीक लोगों ने मुझे दे दिया है के आधार पर) आया है मैं गिन रहा हूं कि डोमेन को मिटाए जाने से पहले हमेशा एक टैब होता है
मैं स्वचालित रूप से डोमेन नाम के बिंदुओं से बच रहा हूं।
कृपया ध्यान दें कि डॉट regexps में विशेष अर्थ नहीं है तो 'domain.com' भी' domainxcom.net' से मेल खाएगी अपने उदाहरण की अंतिम पंक्ति को हटाना चाहते हैं। आपको डॉट से बच जाना चाहिए। – duri
क्या मुझे '' के बीच भी डॉट्स से बचना चाहिए? – Roger
हाँ, आप करते हैं। 'Echo abc | कोशिश करें grep 'a.c'', आउटपुट 'abc' होगा। – duri