如何使用带有多个字符分隔符的剪切?UNIX

alv*_*vas 25 cut sed delimiter

我的文件看起来像这样

abc ||| xyz ||| foo bar
hello world ||| spam ham jam ||| blah blah
Run Code Online (Sandbox Code Playgroud)

我想提取一个特定的列,例如我可以做到:

sed 's/\s|||\s/\\t/g' file | cut -f1
Run Code Online (Sandbox Code Playgroud)

但还有其他方法吗?

Jot*_*tne 35

你可以这样做:

awk -F' \\|\\|\\| ' '{print $1}' file
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`{print $ 1}`? (11认同)
  • 解释它如何工作的细分将是很好的.特别值得指出的是,需要更改它才能获得不同的列. (5认同)
  • `$ 0`保存整行,因此`$ 0 = $ 1`用第一个字段替换该行.``}之后的`1`(任何计算结果为true)导致打印行. (5认同)
  • 我不得不做`awk -F'\\ | \\ | \\\ | ''{print $ 1}'` (2认同)