在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}
我试图整理一系列按日期命名的.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表,上面有一所学校的学生,其中包括名字,姓氏,入学日期和离开日期。 我的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 &
发布
我需要在文件中的两个模式之间选择所有的模式,但是使用变量和*作为通配符。
例如(类似的事情)。
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
说明您的脚本文件将在我们的系统上使用以下命令进行测试:
awk -f ./awk4.awk input.csv
编写一个awk脚本,它将接受以下文件并输出名称和等级字段
📷
显然,我创建了一个bash脚本,它需要是一个awk脚本,它将与命令行中的awk -f一起运行。下面是我的密码。有没有一种简单的方法可以将bash脚本转换为awk脚本,而不必重做所有的操作呢?对方向很困惑。
#!/usr/bin/awk -f
##comment create an awk script that will accept the following file and output the name and g
下面是我的脚本:
#!/bin/bash
for i in *.csv
do
echo "i: $i"
THE_FILE2="$i-2.csv"
file_read()
{
lineno=0
while read line
do
echo $line | awk -F, '{print $1","$2",,,"$
输入
一个名为input_file.csv的文件,它有7列和n行。
示例标题和行:
Date Location Team1 Team2 Time Prize_$ Sport
2016 NY Raptors Gators 12pm $500 Soccer
输出
N个文件,其中每个新文件中的行根据原始文件第7列中的值进行分组。每个文件都是以第7列中的共享值命名的。注意:每个文件都有相同的标题。(脚本当前执行此操作。)
示例:如果原始文件中的2行将golf作为第7列的值,它们将被分组到一个名为golf.csv的文件中。如果其他3行共享soccer作为第7列的值,则可以在soccer.csv中找到
在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在随机地获取直线。为什么会发生这种事,我怎样才能解决呢?谢谢!
我有一个名为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),当前时间(
我创建了一个for循环脚本,如下所示,
for file in *.csv
do
grep raxA $file > new_${file}
done &&
mkdir raxA && mv new_* raxA &&
for file in *.csv
do
grep raxB $file > new_${file}
done &&
mkdir raxB && mv new_* raxB &&
for file in *.csv
do
grep raxC $file > ne
我正试图解析和合并大量包含地形测量地址数据的csv文件。操作系统提供了一个批处理文件,但是我希望能够在Linux服务器上运行它,因为这些文件很大。
我尝试使用这个将bat文件转换为ssh。然而,我正在努力要求这个程序。有人能检查出什么问题吗?
原始脚本(我在这里截断了它)
FOR /F %%A IN ('dir *.csv /b/s') DO (CALL :process "%%A" "%%~NA")
@rem -- merge the individual record identifier files
copy *_10_Records.cs
我想在给定条件的情况下使用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
我用的是bash shell。我想解析一个CSV文件,其中CSV文件观察真正的CSV格式。从这条线上-- https://stackoverflow.com/questions/4286469/how-to-parse-a-csv-file-in-bash,我收到了这个
#!/bin/bash
file_path=$1
echo $1
while IFS=, read -r ID name address zipcode
do
echo "I got:$ID|$name|$address|$zipcode"
done < $file_path
但是,在CSV文
我有一个名为script.sh的文件,其中包含以下代码:
#!/bin/bash
file=list.txt
IFS=$','
cat $file
for i in `cat $file`
do
echo "The name of the file I am going edit is $i"
awk 'BEGIN{FS=OFS=","} /^\<AA_xx\>/||/^\<AA\>/{$160="CC,0,DD,0"} 1' $i \
> temp
我有一个脚本,应该是从.csv导入数据到mysql数据库表。
脚本应读取映射导入过程的配置文件,例如,如果配置文件如下所示:
1 A
2 B
3 D
A、B和D是mysql表中的列名。
然后,bash脚本将.csv中的1、2、3分别导入A、B和D。
我如何首先检查列名是否重复(例如,不超过一个B),以及我应该采取什么方法来使此过程工作。
如何使用ssh使用远程服务器上的引用执行本地bash脚本文件?
a.sh
#!/bin/bash
echo A
source b.sh
b.sh
#!/bin/bash
echo B
在远程ssh服务器上执行:
cat a.sh | ssh myserver
A
-bash: line 4: b.sh: No such file or directory
在不将文件复制到远程服务器的情况下解决此问题的选项是什么?
我有许多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
我有一个名为'readfile.csv‘的文件,内容如下。
Name Id VAl Number IP
James,007,$500,111-111-111,111-000-000
Bond,700,$900,100-000-999, 666-999-000
这里的Name, Id, Val, Number and IP是csv文件中的标题,第二行即FirstVal, SecondVal等是这些标题的值。我只想读取值而不是头,并在控制台中显示它。我该怎么做呢?我还想读取值,直到行结束/文件结束,因为我不知道文件中可以有多少列。它可以是5列或6列。
我正在处理bash例程的设计,该例程由几个功能组成,这些函数用于逐步处理输入数据。
第一个函数根据列2或column3中的数字对每个已处理的CSV中的行进行排序:
# function 1: sort data using either function 1 or function 2
sort_data () {
for csv in "${rescore}"/${str_name}/*.csv; do
csv_name=$(basename "$csv" .csv)
# A) sorting based on the first col
我是bash脚本编程的新手。我正在尝试运行以下脚本:
#! /bin/bash
#the following command runs fine within the bash script
awk>/home/Bash_Scripts/filename1 -F, '$3!="constant"{print}' /home/Bash_Scripts/logs.csv
# THE FOLLOWING COMMAND WORKS FINE FROM COMMAND LINE BUT NOT FROM WITHIN BASH SCRIPT
/usr/bin