在巴什 在拆分给定字符后,我运行以下一个衬里以获得单独的列/字段(如果他们想拆分多个字符,也可以使用 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/