選択した行からスペースを削除する方法

選択した行からスペースを削除する方法

Linuxでは、ファイルの選択された行からスペースを削除するのに小さな問題があります。

たとえば、

f h t s q e g h c h t
f h t r f h v f d g n
q a z x s w e d c v f
f h b c h t h b v h f
p l k o i j u h y g t
t f r d c v b h n j u

今、2行、4行、5行のスペースを削除するにはどうすればよいですか?また、3行目を見つける方法は?

ベストアンサー1

awkを使う

2、4、5行からスペースを削除するには、次のようにします。

$ awk 'NR==2 || NR==4 || NR==5 {gsub(/ /,"");} 1' file 
f h t s q e g h c h t
fhtrfhvfdgn
q a z x s w e d c v f
fhbchthbvhf
plkoijuhygt
t f r d c v b h n j u

awkではNR行番号です。論理式はNR==2 || NR==4 || NR==5関心のある行を選択します。このコマンドはgsub(/ /,"")その行からスペースを削除します。条件1は、awkがその行の秘密の略語を印刷することです。

sedを使う

2、4、5行からスペースを削除するには、次のようにします。

$ sed '3n; 2,5 s/ //g' file 
f h t s q e g h c h t
fhtrfhvfdgn
q a z x s w e d c v f
fhbchthbvhf
plkoijuhygt
t f r d c v b h n j u

ここでは少し異なるロジックを使用します。つまり、3行を除くすべての2〜5行からスペースを削除します。仕組みは次のとおりです。この式は、3nsedに3行目に到達すると印刷し、次の行にジャンプするように指示します。それ以外の場合、 `2,5 s / // gコマンドはsedに2行から5行のすべてのスペースを削除するように指示します。

スペースだけでなく、すべてのスペースを削除します。

awk 'NR==2 || NR==4 || NR==5 {gsub(/[[:space:]]/,"");} 1' file

または:

sed '3n; 2,5 s/[[:space:]]//g' file

おすすめ記事