我有一张CSV表,上面有一所学校的学生,其中包括名字,姓氏,入学日期和离开日期。 我的CSV文件看起来像这样:Table of the Students 我已经开始使用添加用户的代码,但此脚本将为此CSV文件中的每个人添加一个用户 #!/bin/bash
OLDIFS=$IFS
IFS=";"
while read firstname lastname
do
useradd -c "${firstname} ${lastname}" -d /home/"${firstname}" -G group1 -s /bin/bash &
我有许多csv文件如下所示:
data/0.Raw/20190401_data.csv
(只有文件名中间的日期更改)
我希望将所有这些文件连接在一起,但是将日期添加为数据中的一个新列,以便在合并后能够区分不同的文件。
我编写了一个bash脚本,它将完整的路径和文件名作为列添加到每个文件中,然后合并到主csv中。但是,我很难摆脱路径和扩展,只保留日期部分。
bash脚本
#! /bin/bash
mkdir data/1.merged
for i in "data/0.Raw/"*.csv; do
awk -F, -v OFS=, 'NR==1{sub(/\_dat
我希望使用bash脚本将日期输出到csv列,忽略头。我有这一条,但它只给出了一周中的一天,而不是放在一个特定的专栏中:
date | awk '{print $1}' >> date.csv
在运行命令之后,这里是我希望拥有的csv:
bash_script1,bash_script2,bash_script3
Thu Mar 2 03:11:01 EST 2023,Tue Mar 21 05:39:01 EDT 2023,Thu Mar 2 04:19:01 EST 2023
Thu Mar 2 04:19:01 EST 2023,Tue Mar 21 05
我试图整理一系列按日期命名的.csv日志文件(例如,2019-02-24.csv)。有一堆这样的程序,所以我试着编写这个过程的脚本。我已经构建了一个组合单个文件的AWK脚本:
awk ' FNR==1 { while (/"_time",PIN,FULLNAME,OFFICE,Acronym,Name/) getline; } 1 { print } ' 2019-01-01.csv >> usage_history.csv
但是,当我试图将AWK命令与BASH中的一个控制循环串在一起时,我失败了:
for i in {01..28}; do ech
我有一系列.csv文件,其中包含用空格分隔的列(5列)数据。文件名为“yyyymmdd.csv”格式。例如,文件格式如下所示:
20161201.csv内容
key value more columns (this line (header) is absent)
123456 10000 some value
123457 20000 some value
123458 30000 some value
内容: 20161202.csv
key value more columns (this line (header) is absent)
123456 10000 some value
我有一个名为RecordCountTest.csv的CSV文件示例,如下所示:
Date Time Shift Record
26-06-2016 15:23:01 Shift2 000002
23-06-2016 09:06:24 Shift1 000001
当按下GPIO引脚有线按钮时,将运行bash脚本命令。我想要一个简单的AWK或Bash脚本,我可以在命令运行后调用,它可以记录它发生的时间和跟踪。我想通过在顶部(但在标题下)插入一行当前日期(DD-MM-YYYY),当前时间(
在bash脚本中,我想循环遍历存储在csv文件中的值。如何将csv文件中的列导入到bash脚本中,然后执行以下操作:
for i in {column imported from csv}
do
mkdir "$i"
done
我的csv文件如下所示:
1, 3, 8
4, 6, 10
123, 6, 8
324, 9, 12
如何导入要获取的第一列:
for i in {1, 4, 123, 324}
假设我在列中有一些假日数据(holiday_master.csv),如下所示
...
20200320 Vernal Equinox Day
20200429 Showa Day
20200503 Constitution Day
20200505 Green Day
20200720 Children's Day
20200811 Sea Day
...
给出这组数据,我想找出离给定日期最近的下一个假日。例如,如果输入为20200420,则应为20200429 Showa Day。如果输入为20200620,则应为20200720 Children
在bash脚本中,我尝试使用csv文件中的元素创建两个并行数组。csv文件可以包含5-40行。
Array1=($(awk -F, '{a[$1];}END{for (i in a)print i;}' list.csv))
Array2=($(awk -F, '{b[$2];}END{for (i in b)print i;}' list.csv))
但是,这样做后,数组中元素的顺序与文件不匹配,它们甚至不匹配。就像awk在随机地获取直线。为什么会发生这种事,我怎样才能解决呢?谢谢!
我有大约500个文件,我需要用报告所代表的日期重命名。文件名当前为:
WUSR1453722998383.csv
WUSR1453723010659.csv
WUSR1453723023497.csv
诸若此类。文件名中的数字与日期无关,因此我不能使用文件名作为文件重命名的指南。这些报告从2014年12月2日开始,截至昨天(2016年04日09/04),每个月都有一份报告。幸运的是,文件名也是顺序的-所以04/12/2014将有一个高于03/12/2014,这将有一个比02/12/2014更多的数字。这意味着文件按字母顺序自动列出。
然而,在CSV的第一行中,在数据之前有一个日期:
As at
发布
我需要在文件中的两个模式之间选择所有的模式,但是使用变量和*作为通配符。
例如(类似的事情)。
myscript var1 var2 var3
脚本。
#!/bin/bash
cat $1 | sed -n "/*$2*$3/,/## end of string ##/p"
它没有像我预期的那样工作,因为*并不像anything那样工作。*应该是变量之间的任意变量。例如,文件示例($1)就是这样的。
## First line, first variable is var2, and second variable is var3. Information text.
S
我在Bash中是新的,我正在尝试从data.csv昏迷分隔的文件中更改列的值。
在dataset中,变量sex只有两个可能的值'Female'和'Male',我希望将男性转换为'm‘,将女性转换为'f’。我试过这样做:
#!/bin/bash
sex=$(cut -d , -f 5 data.csv) #I select column 5 related with the variable sex
for i in $sex; do
if [[$i='Female']]; then
$i='f'
我有两个日志文件。每一行的格式如下:
<timestamp><rest of line>
使用这种时间戳格式:
2015-10-06 04:35:55.909 REST OF LINE
我需要区分这两个文件模块的时间戳,也就是说,我需要比较这两个文件的行,没有它们的时间戳。我应该使用哪些linux工具?
我在运行bash的RedHat 6机器上,如果它有区别的话
我想在给定条件的情况下使用bash脚本将列附加到csv文件。条件是file1.csv中的列必须有多个唯一值才能添加到newfile.csv。这些不是真正的文件。原始文件有更多的列/行。
如下所示:
file1.csv
1, ah, th, ab, a
2, ah, jk, ab, b
3, ah, lk, ab, c
4, ah, hh, ab, d
newfile.csv应为:
1, th, a
2, jk, b
3, lk, c
4, hh, d
这是我尝试过的脚本。但是,它不会附加新列。输出只是一个csv,其中file1.csv的最后一列具有多个唯一值。
#!/bin/bash
cut