出力を分割し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/(/ (/'
しかし、これは当初期待したようには機能しませんでした。2番目の式は効果がないようです。
代わりに、必要な結果を得るにはsed
、次のように2つの個別のコマンドを実行する必要がありました。
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
複数の命令を持つ1 つのコマンドではなく、なぜパイプ内に2つのコマンドが必要なのですか?または、これを1つsed
で実行できる場合、どうすればよいですか?
私が特に望むのは、すべての単一のアイテム(最初の行のUIDとGIDを含む)のUID / GID値と括弧で囲まれた名前の間に単一のスペースを置くことですが、注意点は、実際のデータにグループを含めることができることです名前に角かっこが含まれていて、名前自体を壊したくない。
-vRS=,
または-054
助けることができます。