例: 01.txt、02.txt、03.txt、および 04.txt には次の値があります。
HDR|A|B|C|D|F|||||||
DTL|1|2|3|4|5|||||||||||
DTL|5|6|7|8|9|||||||||||
TLR|A|B|C|D|F|||||||
HDR、TLRなどのタグに基づいて行全体を削除する必要があります。
4つのファイルからHDRとTLR行を削除した後、単一のファイルにマージする必要があります。
HDR、TLR 行を削除した後も、ファイルの順序が維持されるようにマージする必要があります。 (01_latest.txt, 02_latest_txt, 03_latest.txt, 04_latest.txt)
UNIXでスクリプトをどのように実装できますか?
ベストアンサー1
以下を使用してこの行を削除することもできますgrep
。
$ grep -vE "HDR|TLR" *.txt > merged.txt
これにより、「HDR」または「TLR」を含む行はスキップされます。これは|
or 演算子なので、必要に応じて「STR1|STR2|STR3」のように拡張することもできます。名前が一貫している場合は、ファイルを繰り返すことが保証されます01.txt
。02.txt
次の例でこれを確認できます。
$ ls -1
01.txt
02.txt
03.txt
04.txt
05.txt
06.txt
07.txt
08.txt
09.txt
11.txt
12.txt
13.txt
14.txt
15.txt
16.txt
17.txt
18.txt
19.txt
$ echo *.txt
01.txt 02.txt 03.txt 04.txt 05.txt 06.txt 07.txt 08.txt 09.txt 11.txt 12.txt 13.txt 14.txt 15.txt 16.txt 17.txt 18.txt 19.txt
*.txt
ここで探している順序でシェルが拡張されていることがわかります。