相关疑难解决方法(0)

在Unix命令行上简洁便携的"加入"

如何将多行连接到一行,使用分隔符表示换行符,并避免使用尾随分隔符,并可选择忽略空行?

例.考虑一个文本文件foo.txt,有三行:

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

foo,bar,baz
Run Code Online (Sandbox Code Playgroud)

我现在使用的命令:

tr '\n' ',' <foo.txt |sed 's/,$//g'
Run Code Online (Sandbox Code Playgroud)

理想情况下它会是这样的:

cat foo.txt |join ,
Run Code Online (Sandbox Code Playgroud)

什么是:

  1. 最便携,简洁,可读的方式.
  2. 使用非标准unix工具的最简洁方法.

当然我可以写一些东西,或者只是使用别名.但我很想知道这些选择.

unix shell

74
推荐指数
4
解决办法
2万
查看次数

如何在git中添加可选的子模块?

当我们在git存储库中有很多(比如20个)子模块时,我们可以像这样安装(和更新)它们:

git submodules update --init --recursive 
Run Code Online (Sandbox Code Playgroud)

Git尝试在此命令后下载每个子模块(递归).如果我们想让一些子模块可选(如插件)怎么办?

我们怎样才能让git跳过默认下载这些可选子模块,并在我们标记这个子模块时处理为通常的子模块"好的,从现在开始使用"?

git plugins git-submodules

8
推荐指数
1
解决办法
263
查看次数

如何使用sed/awk替换以逗号分隔的字符串中的第n列/字段?

假设我有一个字符串

"1,2,3,4"
Run Code Online (Sandbox Code Playgroud)

现在我想用一些不同的值替换,例如字符串的第3个字段.

"1,2,NEW,4"
Run Code Online (Sandbox Code Playgroud)

我设法使用以下命令执行此操作:

echo "1,2,3,4" | awk -F, -v OFS=, '{$3="NEW"; print }'
Run Code Online (Sandbox Code Playgroud)

现在要替换的列的索引应该作为变量传递.所以在这种情况下

index=3
Run Code Online (Sandbox Code Playgroud)

我怎么能把这个传递给awk?因为这不起作用:

echo "1,2,3,4" | awk -F, -v OFS=, '{$index="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{$($index)="NEW"; print }'
echo "1,2,3,4" | awk -F, -v OFS=, '{\$$index="NEW"; print }'
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

csv bash awk replace sed

7
推荐指数
2
解决办法
3万
查看次数

在 bash 中将列表转换为单行字符串

我有一个包含列表的文件:

line1
line2
line3
.
.
.
Run Code Online (Sandbox Code Playgroud)

我想将所有内容加入 bash 中的字符串中,如下所示:

"line1", "line2", "line3", ...... (no comma at the end)
Run Code Online (Sandbox Code Playgroud)

我怎么做?

编辑:这不是如何使用自定义分隔符将多行文件名连接成一行的重复项?因为我试图在加入时将每个项目都用双引号引起来。

bash

4
推荐指数
1
解决办法
8739
查看次数

如何将目录中的所有文件名保存为bash中的文本文件?

我有一个包含数百万个文件的目录.我刚刚学会了数百万孤儿,我需要取消联系.我想从单个文本文件(理想情况下为csv)中的所有文件数组开始.你能帮我吗?

我打算做一个ls只是将终端输出保存到文件中,但我认为这是一种更优雅的方式.

我怎么能做出ls > log.csv最终看起来像的东西

file1.txt,file2.txt, ... fileN.txt

unix bash shell ls file

3
推荐指数
1
解决办法
2148
查看次数

将文本文件转换为逗号分隔的字符串

我似乎没有找到与此确切问题相匹配的SO问题.

我有一个文本文件,每行有一个文本标记,没有任何逗号,制表符或引号.我想根据文件内容创建一个逗号分隔的字符串.

输入:

one
two
three
Run Code Online (Sandbox Code Playgroud)

输出:

one,two,three
Run Code Online (Sandbox Code Playgroud)

我正在使用此命令:

csv_string=$(tr '\n' ',' < file | sed 's/,$//')
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?

csv bash awk sed delimited-text

3
推荐指数
1
解决办法
367
查看次数

标签 统计

bash ×4

awk ×2

csv ×2

sed ×2

shell ×2

unix ×2

delimited-text ×1

file ×1

git ×1

git-submodules ×1

ls ×1

plugins ×1

replace ×1