linux 逗号分隔,linux-如何用逗号分割列表而不是sp
linux-如何用逗号分割列表而不是sp
我想用,分隔文本,而不是for foo in list中的。假设我有一个CSV文件CSV_File,其中包含以下文本:
Hello,World,Questions,Answers,bash shell,script
...
我使用以下代码将其拆分为几个词:
for word in $(cat CSV_File | sed -n 1'p' | tr ',' '\n')
do echo $word
done
它打印:
Hello
World
Questions
Answers
bash
shell
script
但我希望它用逗号而不是空格分隔文本:
Hello
World
Questions
Answers
bash shell
script
我如何在bash中实现这一目标?
7个解决方案
48 votes
将IFS设置为:
sorin@sorin:~$ IFS=',' ;for i in `echo "Hello,World,Questions,Answers,bash shell,script"`; do echo $i; done
Hello
World
Questions
Answers
bash shell
script
sorin@sorin:~$
Sorin answered 2020-07-29T02:47:50Z
46 votes
使用subshell替换来解析单词会撤消将空格放在一起的所有工作。
请尝试:
cat CSV_file | sed -n 1'p' | tr ',' '\n' | while read word; do
echo $word
done
这也增加了并行度。 在问题中使用subshell会强制完成整个subshell过程,然后才能开始遍历答案。 通过管道连接到子外壳(如我的回答),它们可以并行工作。 当然,这仅在文件中有很多行时才重要。
mkj answered 2020-07-29T02:47:30Z
17 votes
我认为规范的方法是:
while IFS=, read field1 field2 field3 field4 field5 field6; do
do stuff
done < CSV.file
如果您不知道或不在乎有多少个字段:
IFS=,
while read line; do
# split into an array
field=( $line )
for word in "${field[@]}"; do echo "$word"; done
# or use the positional parameters
set -- $line
for word in "$@"; do echo "$word"; done
done < CSV.file
glenn jackman answered 2020-07-29T02:48:14Z
10 votes
kent$ echo "Hello,World,Questions,Answers,bash shell,script"|awk -F, '{for (i=1;i<=NF;i++)print $i}'
Hello
World
Questions
Answers
bash shell
script
Kent answered 2020-07-29T02:48:30Z
7 votes
创建一个bash函数
split_on_commas() {
local IFS=,
local WORD_LIST=($1)
for word in "${WORD_LIST[@]}"; do
echo "$word"
done
}
split_on_commas "this,is a,list" | while read item; do
# Custom logic goes here
echo Item: ${item}
done
...这将产生以下输出:
Item: this
Item: is a
Item: list
(注意,此答案已根据一些反馈进行了更新)
Andrew Newdigate answered 2020-07-29T02:48:58Z
5 votes
阅读:[http://linuxmanpages.com/man1/sh.1.php]&[http://www.gnu.org/s/hello/manual/autoconf/Special-Shell-Variables.html]
IFS内部字段分隔符,用于单词拆分 扩展后,将行与单词拆分成单词 内置命令。 默认值为``''。
IFS是一个Shell环境变量,因此它将在Shell脚本的上下文中保持不变,但在其他情况下将保持不变,除非您将其导出。 还请注意,IFS根本不会从您的环境继承:请参阅此gnu帖子,以获取有关IFS的原因和更多信息。
您的代码是这样写的:
IFS=","
for word in $(cat tmptest | sed -n 1'p' | tr ',' '\n'); do echo $word; done;
应该可以工作,我在命令行上对其进行了测试。
sh-3.2#IFS=","
sh-3.2#for word in $(cat tmptest | sed -n 1'p' | tr ',' '\n'); do echo $word; done;
World
Questions
Answers
bash shell
script
Ashley Raiteri answered 2020-07-29T02:49:37Z
0 votes
您可以使用:
cat f.csv | sed 's/,/ /g' | awk '{print $1 " / " $4}'
要么
echo "Hello,World,Questions,Answers,bash shell,script" | sed 's/,/ /g' | awk '{print $1 " / " $4}'
这是用空格替换逗号的部分
sed 's/,/ /g'
ozma answered 2020-07-29T02:50:05Z
linux 逗号分隔,linux-如何用逗号分割列表而不是sp相关推荐
- matlab中使用逗号分割列表简化代码
- java 文件读取 逗号分隔_如何用逗号(,)作为R中的分隔符读取csv文件
我正在尝试在R.中读取此csv文件 . (scores.csv) ALVO,P,Prediction,fold 1,0.9079557994069131,"1",0 1,0.432 ...
- linux perl模块检测,Linux有问必答:如何用Perl检测Linux的发行版本
提问:我需要写一个Perl程序,它会包含Linux发行版相关的代码.为此,Perl程序需要能够自动检测运行中的Linux的发行版(如Ubuntu.CentOS.Debian.Fedora等等),以及它 ...
- linux对当前使用的分区分割,实例解说Linux中fdisk分区使用方法
一.fdisk 的介绍 fdisk - Partition table manipulator for Linux ,译成中文的意思是磁盘分区表操作工具:本人译的不太好,也没有看中文文档:其实就是分区 ...
- 详细介绍Linux shell脚本系列基础学习(列表)
本系列适合Linux初学者,属于Linux入门级教程,主要介绍了Shell的分类.语法格式以及脚本的使用和编写格式等. 不断更新中,是Shell学习的必读经典教程.现主要包含以下文章: Linux S ...
- linux中split分割文件打开方式,Linux系统下使用split命令分割大文件 (转载)
[小蜗牛闲情之作 ] 我想给一个朋友传一个大视频,有几百M,尝试多种传输办法失败后,最后想到的是把视频切开一片片"邮递"过去给他,让它自己组装起来吧. [root@pps publ ...
- 解决 linux du: Argument list too long 参数列表过长的办法
解决 linux du: Argument list too long 参数列表过长的办法 免费领取满减阿里云红包 需求:需要查看一类文件得总大小 问题如下图: 解决方法: 1.使用xargs命令 f ...
- Linux下推荐的常用应用程序列表
Linux下推荐的常用应用程序列表 一,网页浏览 1,firefox firefox是现在最火的一个浏览器,支持好多扩展和插件,也有很多漂亮的主题.firefox就是mozilla-firefox,他 ...
- Linux使用命令移动文件夹,linux虚拟机中如何用命令来移动文件夹
对于新手来说,经常会碰到如何移动linux系统中的文件夹之类的问题,这些命令都很简单,关键在于熟能生巧,接下来跟着小编一起学习一下如何在装有linux的虚拟机中进行文件夹的移动. linux虚拟机中如 ...
- linux 获取文件夹下文件信息,linux下获取文件夹下子文件列表
linux下获取文件夹下子文件列表 预置条件: 1.只遍历当前目前,不遍历当前目录的子文件夹 2.根据用户提供的开始时间戳以及持续时间,返回在这个时间区间内被修改过的文件列表. 相关知识: 1.str ...
最新文章
- 关于使用sudo命令后找不到JAVA_HOME的问题
- Boost:双图bimap与range范围的测试程序
- C语言学习之通过指针变量调用它所指向的函数
- 白盒-CNN纹理深度可视化: 使用MIT Place 场景预训练模型
- k8s extender_Windows Home Server的Drive Extender的9种选择
- 学习笔记1-Linux1
- python 时间模块 time datetime calendar
- struts2 action中result参数详解
- 已解决:An error occurred at line: 1 in the generated java file The type java.io.ObjectInputStream canno
- deeplearning.ai——构建循环神经网络
- 浏览器提示:你的连接不是专用连接的解决方法
- 【安卓作业】星座查询小程序
- IAT-Hook 劫持进程Api调用
- 思科CCNA认证视频 CCNA视频 ccna最新题库 专题 复习资料
- Windows XP的定时关机命令
- 都快2021年了,居然还有人不会MECE
- AI时代——人工智能技术图谱,它来啦(机器学习+深度学习学习路线)
- codeforces 1635E-Cars (二分图染色+拓扑排序)
- 如何快速新建文件和文件夹
- 10款国外免费VoIP服务
热门文章
- python画正方形-用python画一个正方形
- 空间数据挖掘与空间大数据的探索与思考(五)
- 360安全卫士极速版修改浏览器主页
- 网页动画--鲜花爱心表白动画
- 中国大学MOOC-陈越、何钦铭-数据结构-习题解答-04 树(中)
- 怦然心动(Flipped)-2
- 计算机术语alu,计算机术语大全
- 网络通信学习(四)——通过接入网进入互联网内部,探索接入网和网络运营商
- Modern C++ JSON nlohmann::json 使用详解
- red5 1.0.7 集成tomcat 并且 进行整合 官方例子oflaDemo