次のコマンドを使用して、使用可能なディスクのリストとSSDか回転ディスクかを返しました(デフォルトではlsblk出力の0と1を実際の意味に置き換えます)。
lsblk -d -o name,ro | sed "s/RO/\ TYPE/; s/NAME/DISK/; s/0/SSD/g; s/1/ROT/g"
出力例:
DISK TYPE
sda SSD
sdb ROT
lsblk
今度は()に別の列「rm」を追加したいが、lsblk -d -o name,ro,rm
他の項目を表すために0と1も使用します(0 =固定ディスク、1 =リムーバブルディスク)。
sed(またはawkなど)を使用して3番目の列の0と1をYESとNOに置き換える方法はありますか?
答え1
努力する
lsblk -d -o name,ro,rm |
awk '$2 == 0 { $2 = "SSD" ; } $2 == 1 { $2 = "ROT" ; }
$3 == 0 { $3 = "NO" ; } $3 == 1 { $3 = "YES" ;}
{ print ; }'
- これは1行にすることができます。
- 時々人々
1
は{ print ; }
。 - 練習
RO
で左に変えてください。TYPE
答え2
Awk
方法:
lsblk -d -o name,ro,rm \
| awk 'NR == 1{ print "DISK TYPE REMOVABLE"; split("SSD ROT", ro); split("NO YES", rm); next}
{ print $1, ro[$2+1], rm[$3+1] }'
出力例:
DISK TYPE REMOVABLE
sda SSD NO
sr0 SSD YES