【问题标题】:using awk/sed to print text使用 awk/sed 打印文本
【发布时间】:2015-09-14 16:45:49
【问题描述】:

我有一个文本文件 abc.csv,其中包含以下格式的数据-

mikayel, abc def ghi, acc, ma
michael, def ghi jkl, rcc, ma
michelle, mno pqr stu vwx, tyy, ma
monelle, yzq rty, gcc, ma

我想要第二列作为列表 -

abc def ghi
def ghi kjl
mno pqr stu vwx
yzq rty

如何使用 sed 或 awk 来实现?

【问题讨论】:

  • awk -F, '{print $2}' file??我觉得这个问题一定是重复的。至少OP没有做任何谷歌.....但我懒得找到重复的问题并关闭问题............
  • 是的,这行得通。谢谢

标签: awk sed


【解决方案1】:

假设第二个字段内没有,(转义一个),那么可以使用 sed:

sed  's/[^,],[[:blank:]]*//;s/[[:blank:]]*,*//' YourFile

使用 awk 更容易:

awk -F ',' '{print $2}' YourFile

但是,如果“使用 sed 或 awk”不是一个强要求,那么最好使用专为这项工作设计的工具:

cut -d ',' -f 2 YourFile

【讨论】:

  • 剪切效果很好。但有效的命令是 - cut -d , -f 2 YourFile
  • cut 的两个版本都可以在我的 AIX 和 Linux (RHEL) 上运行,你有哪个操作系统?
  • 我在 Linux 上工作。当我使用第一个版本时 - 我收到一个错误 - 分隔符必须是单个字符。
  • 我认为 shell 错误。我最常使用 KSH 而不是 bash 可能是原因
  • 我想将结果另存为列表的单独条目。例如 - [lindex $list 0] - abc def ghi [lindex $list 1] - def ghi kjl 当我使用 sed 或 cut 执行此操作时,我会将所有这些作为单独的条目添加到列表中。
猜你喜欢
  • 1970-01-01
  • 2015-01-12
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 2013-10-15
  • 1970-01-01
  • 2020-09-26
  • 2018-03-31
相关资源
最近更新 更多