मैं उन idसमूहों के अधिक पठनीय लाइन-दर-सूची सूची प्रदान करने के लिए आउटपुट को विभाजित कर रहा था जिनमें से एक उपयोगकर्ता एक सदस्य है:
id roaima | sed 's/,/\n\t/g'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24(cdrom)
25(floppy)
...
822413650 (international (uk) location)
मैं समूह संख्या को उसके ब्रैकेट नाम से अलग करना चाहता था इसलिए मैंने इस तरह से अभिव्यक्ति को बढ़ाया
id roaima | sed -e 's/,/\n\t/g' -e '2,$s/(/ (/'
हालाँकि, इसने अभिनय नहीं किया जैसा कि मुझे शुरू में उम्मीद थी। दूसरी अभिव्यक्ति का कोई असर नहीं हुआ।
इसके बजाय, मैं जो परिणाम चाहता था, उसे पाने के लिए मुझे दो अलग-अलग sedकमांड चलाने की जरूरत थी , जैसे:
id roaima | sed -e 's/,/\n\t/g' | sed '2,$s/(/ (/'
uid=1001(roaima) gid=1001(roaima) groups=1001(roaima)
24 (cdrom)
25 (floppy)
...
822413650 (international (uk) location)
मुझे sedकई निर्देशों के साथ एक के बजाय एक पाइप में दो कमांड की आवश्यकता क्यों है ? या अगर मैं एक के साथ ऐसा कर सकता हूं sed, तो मैं ऐसा कैसे करूंगा?
मैं विशेष रूप से यूआईडी / जीआईडी मूल्य और हर एकल आइटम के लिए इसके ब्रैकेटेड नाम (पहली पंक्ति पर यूआईडी और जीआईडी सहित) के बीच एकल स्थान रखना चाहता हूं, लेकिन यह चेतावनी है कि मेरे वास्तविक डेटा में मैं समूह बना सकता हूं उनके नाम में कोष्ठक होते हैं और मैं उन नामों को नहीं चाहता जो स्वयं मंगवाए थे।
-vRS=,या-054मदद कर सकता है।