linux - 如何获得排序、定义或除给定列之外或之后或之前的所有列

标签 linux groovy split multiple-columns cut

在巴什 在拆分给定字符后,我运行以下一个衬里以获得单独的列/字段(如果他们想拆分多个字符,也可以使用 AWK,即以任何顺序拆分一个单词,好的)。

#This will give me first column i.e. 'lori' i.e. first column/field/value after splitting the line / string on a character '-' here
echo "lori-chuck-shenzi" | cut -d'-' -f1

# This will give me 'chuck'
echo "lori-chuck-shenzi" | cut -d'-' -f2

# This will give me 'shenzi'
echo "lori-chuck-shenzi" | cut -d'-' -f3

# This will give me 'chuck-shenzi' i.e. all columns after 2nd and onwards.
echo "lori-chuck-shenzi" | cut -d'-' -f2-

请注意上面的最后一个命令,我如何在 Groovy 中执行相同的最后一个 cut 命令?

例如:如果内容在一个文件中并且它们看起来像:

1 - a
2 - b
3 - c
4 - d
5 - e
6 - lori-chuck shenzi
7 - columnValue1-columnValue2-columnValue3-ColumnValue4

我尝试了以下 Groovy 代码,但它没有给我 lori-chuck shenzi(即在忽略第 6 个项目符号和第一次出现的 - 之后,我想要我的输出为 lori-chuck shenzi 并且以下脚本只返回我 lori (这给了我正确的输出,因为我的索引是 [1] 在下面的代码中,所以我知道)。

def file = "/path/to/my/file.txt"

File textfile= new File(file) 

//now read each line from the file (using the file handle we created above)
textfile.eachLine { line -> 
    //list.add(line.split('-')[1])
    println "Bullet entry full value is: " + line.split('-')[1]
}
// return list

另外,上面文件的最后一行是否有一个简单的方法,如果我可以使用 Groovy 代码在列被拆分后更改它们的顺序,即像我们在 Python [1:] 中那样颠倒顺序, [:1]、[:-1] 等..或以某种方式

最佳答案

我不喜欢这个解决方案,但我这样做是为了让它发挥作用。从 [1..-1 获取索引值后(即从第一个索引,不包括第 0 个索引,它是第一次出现的 - 字符的左侧),我必须使用 join(',') 删除 [] (LIST),然后替换任何 ,使用 - 得到我正在寻找的最终结果。

list.add(line.split('-')[1..-1].join(',').replaceAll(',','-'))

我仍然想知道什么是更好的解决方案,以及当我们谈论以给定顺序挑选单个列 +(而不是我编写各种 Groovy 语句来从每个语句的字符串/列表中挑选单个元素)时,它如何工作).

关于linux - 如何获得排序、定义或除给定列之外或之后或之前的所有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45336944/

相关文章:

grails - Groovy中此方法的返回类型是什么?

go - 拆分包括 EOF?

python - 每第n个字符拆分字符串?

linux - 如何管理 Linux 文件夹的权限?

unit-testing - 如何模拟一种在clazz中传递的方法?

linux - 如何使用shell expr统计目录下的文件个数

grails - 在为 Grails 应用程序编写 Geb/Spock 测试时,您将如何封装用户的登录操作,以便可以在测试中重用它?

bash - 无法根据分隔符拆分文本文件

java - 在 Java 中检查某个应用程序是否处于焦点

linux - 有没有办法告诉 sed 忽略符号链接(symbolic link)?