
次のように、特殊な区切り文字で区切られた複数の文字を含む複数の列を含むファイルがあります<xx>
。
1行は次のとおりです。
firststring<xx>11<xx>thirdstring/<xx>22<xx>00<xx>00<xx><xx><xx><xx>-1<xx>-1<xx>1
一部の列には何も含まれていないため、次の列があります。<xx><xx>
すべての行の8列と9列を印刷する必要があります。どうすればいいですか?このコマンドを試しましたが、何も印刷されませんでした。
cat myfile.txt | cut -d '<xx>' -f8,9
cut: the delimiter must be a single character
Try 'cut --help' for more information.
答え1
最大実装では、awk
複数文字のフィールド区切り文字を受け入れます。したがって、次のことを試すことができます。
awk -F'<xx>' '{print $8,$9}' myfile.txt
元の区切り文字を保持するには、次の値を設定する必要があります。出力フィールド区切り記号 OFS
そして例えば
awk -F'<xx>' 'BEGIN{OFS=FS} {print $8,$9}' myfile.txt
それとも、あります。ミラーcut
- のような構文が必要な場合:
mlr --nidx --ifs '<xx>' cut -f 8,9 myfile.txt
または、カスタム区切り文字を維持します。
mlr --nidx --fs '<xx>' cut -f 8,9 myfile.txt