根据提供的答案修订工作:

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Get-Content ./case.csv  | ForEach-Object ToUpper                            
FJKDLA,W
FKDSLAJF,FDJK;A
NLK;NBF;SDJF,DGDF
VNL;KKDF,BGNGFN
NVCL;V,RGS
NVKL;,THRN
VLKDF,TMMJYMF
FJDK,FDJK;A
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Get-Content ./case.csv  | ForEach-Object ToLower 
fjkdla,w
fkdslajf,fdjk;a
nlk;nbf;sdjf,dgdf
vnl;kkdf,bgngfn
nvcl;v,rgs
nvkl;,thrn
vlkdf,tmmjymf
fjdk,fdjk;a
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> $TextInfo = (New-Object System.Globalization.CultureInfo("en-US")).TextInfo;
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Get-Content ./case.csv  | ForEach-Object ToTitleCase                         
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> pwsh --version
PowerShell 7.3.4
PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 23.04
Release:    23.04
Codename:   lunar
PS /home/nicholas/powershell> 

我主要关心的是更多地转换为TitleCase,理想情况下,从REPL控制台而不是脚本文件转换.我还没能更新针对特定专栏的最新努力.

说到REPL控制台,我指的是交互式shell ,如果这有意义的话.

所有的回答和 comments 都是非常有帮助和感激的.

更多信息:

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> Get-Culture                                        

LCID             Name             DisplayName
----             ----             -----------
1033             en-US            English (United States)

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> (Get-Culture).TextInfo.ToTitleCase($_.fjkdla) 

PS /home/nicholas/powershell> 
PS /home/nicholas/powershell> (Get-Culture).TextInfo.ToTitleCase("hmm")     
Hmm
PS /home/nicholas/powershell> 

这看起来是单个字符串的所需输出.但是,不确定如何从控制台迭代上面的CSV文件.

推荐答案

Update.对现已发生重大变化的问题的答复:

  • 正如标题中仍然反映的那样,您最初的问题是关于CSV个数据,目标是specific列.假设您最初使用的是Import-Csv,则需要使用OO方法,如下一节所示.

    • 要瞄准specific column,你需要知道它的exact name(除了这种情况无关紧要).
    • 如果您的CSV文件lacks headers,即初始行with column names,您需要:
      • 手工提供列名,通过Import-Csv‘S -Header参数,例如:Import-Csv ./case.csv -Header Name, Value.
      • 然后引用ForEach-Object脚本块中的那些列名,如下所示(例如$_.Name)
  • 您更新的问题使用plain-text处理CSV文件,使用Get-Content,似乎试图将all列值转换为标题大小写;为此,使用以下方法:

     $textInfo = (Get-Culture).TextInfo
     Get-Content ./case.csv | ForEach-Object { $textInfo.ToTitleCase($_) }
    
     # Alternatively, if performance doesn't matter and you don't want to 
     # create an aux. variable, to reduce the interactive typing effort:
     Get-Content ./case.csv | ForEach-Object { (Get-Culture).TextInfo.ToTitleCase($_) }
    

Answer to the original, OO question:

在单个管道中设置为convert a single, known column to title case,即be sure to use its exact name(尽管大小写不重要);以示例CSV的第一个列名为例:

Import-Csv ./case.csv |
  ForEach-Object {
    $_.fjkdla = (Get-Culture).TextInfo.ToTitleCase($_.fjkdla)
    $_ # Output the modified object.
  }

这将输出从CSV文件解析的修改后的对象,并直接输出它们;默认情况下,它们打印到屏幕上;例如,将$csv = 前置到管道,以在变量$csv中捕获其输出.

注:

  • 如果您已经导入了CSV文件并将生成的对象保存到数组$csv,iRon's建议是一个简单而高效的解决方案,使用intrinsic .ForEach() method:

    # Transforms the objects stored in $csv in-place.
    $csv.ForEach({ $_.fjkdla = (Get-Culture).TextInfo.ToTitleCase($_.fjkdla) })
    

在不需要事先知道列(属性)值的情况下,使用intrinsic psobject property有条不紊地执行convert all columns to title case:

Import-Csv ./case.csv |
  ForEach-Object {
    # Iterate over all properties and modify their values.
    foreach ($prop in $_.psobject.Properties) {
      $prop.Value = (Get-Culture).TextInfo.ToTitleCase($prop.Value)
    }
    $_ # Output the modified object.
  }

注:

  • 为简单起见,并最大限度地减少交互式键入工作,上述解决方案调用Get-Culture,不仅 for each 对象获取标题大小写方法,而且在最后一种情况下,还 for each 对象的每个属性获取标题大小写方法,这是低效的.

Better-performing alternative,它缓存对该方法的引用并使用.Invoke():

$titleCaseMethod = (Get-Culture).TextInfo.ToTitleCase
Import-Csv ./case.csv |
  ForEach-Object {
    # Iterate over all properties and modify their values.
    foreach ($prop in $_.psobject.Properties) {
      $prop.Value = $titleCaseMethod.Invoke($prop.Value)
    }
    $_ # Output the modified object.
  }

Linux相关问答推荐

排除最大FIFO大小故障

列出Linux上特定目录和子目录名称的bash命令

并行函数的最后一个实例的状态

JSON 转义 CURL/JQ 输出

Linux TTY 操作顺序

"‘operator<<’匹配失败(可能是因为我的C++/GCC版本问题)"

如何让xargs对 bash 脚本中find命令找到的所有文件执行?

使用 sed linux 命令和 i sed 命令进行 preprend 时的反向引用

有必要注意非错误提示吗?好像没有找到包裹‘***’?

PuTTY:更改默认 SSH 登录目录

将 AWK 结果分配给变量

为什么`du`的输出通常与`du -b`如此不同

qstat 和长作业(job)名称

仅使用 proc 获取本地网络接口地址?

rename() 是原子的吗?

卸载从源代码构建的python?

后缀 - status=bounced(未知用户myuser)

Hierarchical分层 ldd(1)

CentOS:在 PHP 安装中启用 GD 支持

Linux 目录列表中只有问号