Cutを使用して特殊な区切り文字で区切られた特定の列を出力する方法

Cutを使用して特殊な区切り文字で区切られた特定の列を出力する方法

次のように、特殊な区切り文字で区切られた複数の文字を含む複数の列を含むファイルがあります<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

おすすめ記事