将 CSV 文件中的特定列转换为小写

smo*_*smo 4 csv shell perl

我有一个 CSV 文件,我想将特定列转换为小写。在Linux中执行此操作的有效方法是什么?

Ama*_*dan 5

awk -F"," 'BEGIN{OFS=","} {$5 = tolower($5); print}' file
Run Code Online (Sandbox Code Playgroud)

更改第 5 个字段。

还有-v OFS=",",但不能 100% 确定它有多标准;另外,周围的引号,可以省略,但为了一般性,我保留了它们;所以,作为一个变体:

awk -F, -v OFS=, '{$5 = tolower($5); print}' file
Run Code Online (Sandbox Code Playgroud)

请注意,awk 字段是从 1 开始的。sarathi的答案在perl中做了同样的事情,它是从0开始的;确保选择正确的索引。

编辑:正如 melpomene 正确指出的那样,这两种情况仅适用于没有引号或转义符的简单 CSV。

  • 在 `foo,"bar,bar","baz""",quux` 等内容上失败。 (4认同)