特定の文字列を含む行をファイルの先頭に移動するには?

特定の文字列を含む行をファイルの先頭に移動するには?

特定の文字列(005や007など)を含む行をターゲットファイルの先頭に移動するにはどうすればよいですか?

ターゲットファイルの内容:

XXX_008
XXX_001
XXX_002
XXX_009
XXX_003
XXX_006
XXX_005 ----> located here
XXX_007 ----> and here
XXX_004

XXX_005行を一番上に移動するにはXXX_007?残りのファイルの順序を維持しますか?このように:

XXX_005 ----> now here
XXX_007 ----> and here
XXX_008
XXX_001
XXX_002
XXX_009
XXX_003
XXX_006
XXX_004

残りは元の順序で維持されます。

...any-name_001、any-name_002などのように常に数字に二重ゼロを追加するので、行を移動するときに数字のみを指定できるとよいでしょう。

これは可能ですか?

ベストアンサー1

努力する:

<file gawk '/_005/,/_007/ {
  top[i++]=$0
  next
}
{
  botom[j++]=$0
}
END {
  for(k in top)
    print top[k]
  for(k in botom)
    print botom[k]
}'

おすすめ記事