小编Dhr*_*uuv的帖子

根据文件的第 5 列值过滤 .CSV 文件并将这些记录打印到新文件中

我有一个以下格式的 .CSV 文件:

"column 1","column 2","column 3","column 4","column 5","column 6","column 7","column 8","column 9","column 10
"12310","42324564756","a simple string with a , comma","string with or, without commas","string 1","USD","12","70%","08/01/2013",""
"23455","12312255564","string, with, multiple, commas","string with or, without commas","string 2","USD","433","70%","07/15/2013",""
"23525","74535243123","string , with commas, and - hypens and: semicolans","string with or, without commas","string 1","CAND","744","70%","05/06/2013",""
"46476","15467534544","lengthy string, with commas, multiple: colans","string with or, without commas","string 2","CAND","388","70%","09/21/2013",""
Run Code Online (Sandbox Code Playgroud)

文件的第 5 列有不同的字符串。我需要根据第 5 列值过滤掉文件。比方说,我需要当前文件中的一个新文件,该文件的第五个字段中只有值“string 1”的记录。

为此,我尝试了以下命令,

awk -F"," ' { if toupper($5) == "STRING 1") PRINT }' file1.csv > …

linux sed awk filter csv

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

如何从 .CSV 文件的几列中删除撇号 ( ' )?

我有一个包含 7 个字段的 .CSV 文件,文件的第 3 列和第 4 列有一个以撇号 ( ' ) 开头的数字。请看下面的例子。

col0,col1,col2,col3,col4,col5,col6,
1value0,1value1,'8972991766941,'8972991766941,1value4,1value5,1value6,
2value0,2value1,'8912988876583,'8912988876583,2value4,2value5,2value6,
3value,3value1,'8912981226981,'8912981226981,3value4,3value5,3value6,
2value0,4value1,'8912971783681,'8912971783681,4value4,4value5,4value6,
Run Code Online (Sandbox Code Playgroud)

如何仅使用 sed 或 awk 去掉第 3 列和第 4 列中的撇号?

sed awk text-processing csv

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

如何使用撇号 ( ' ) 为列值添加前缀?

我有一个包含多列和 1000 条记录的 CSV 文件,我需要在其中一列(比如第二列)的所有值'前面加上撇号,除了第一行或标题行,可能有一个简单的单行为了这。我怎样才能使用awkor实现这一目标sed?请注意,我可能在用双引号括起来的值中有多个逗号。

样本数据:

"col1","col2","col3","col4","col5"
"value11","value12","value13","value14","value15"
"value21","value22","value23","value24","value25"
"value31","value32","value33","value34","value35"
Run Code Online (Sandbox Code Playgroud)

预期输出:

"col1","col2","col3","col4","col5"
"value11","'value12","value13","value14","value15"
"value21","'value22","value23","value24","value25"
"value31","'value32","value33","value34","value35"
Run Code Online (Sandbox Code Playgroud)

linux sed awk csv

4
推荐指数
3
解决办法
1671
查看次数

无法从脚本中获取正确的退出代码

我有一个脚本,它通过 SFTP 连接到远程服务器并从那里获取一些文件。我的脚本是这样的:

/usr/bin/sftp USER@remote.server.com <<EOF
lcd /dir1/dir2/dir3
cd /rsdir1/rsdir2/rsdir3
get file_pattern`date -d "last month" +%m%Y`.csv
EOF
rc=$?
        if [[ $rc != 0 ]]
           then
        echo "Error occured getting file and the script abended with error code $rc" `date "+%Y-%m-%d-%H.%M.%S"`
            exit 1
    else
    echo "Successfully transferred the file" `date "+%Y-%m-%d-%H.%M.%S"`
        fi
Run Code Online (Sandbox Code Playgroud)

但是,即使脚本没有找到具有该模式的文件,它也会转到脚本的else部分并在屏幕上为我提供输出

Connecting to remote.server.com...
sftp> lcd /dir1/dir2/dir3
sftp> cd /rsdir1/rsdir2/rsdir3
sftp> get file_pattern032014.csv
Couldn't stat remote file: No such file or directory
File "/rsdir1/rsdir2/rsdir3/file_pattern032014.csv" not found.
Successfully …
Run Code Online (Sandbox Code Playgroud)

shell bash ssh sftp exit

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

将 CSV 文件列中的字符串替换为另一个带单引号的字符串

我想通过查找特定字符串来替换 .CSV 文件(使用 awk)的第三列的内容,并用另一个带有单引号的字符串替换并将其输出复制到另一个文件中。关于我做错了什么的任何建议?

例如:

column1, coluumn2, coulumn3, column4, column5
1, item1, WALMART, 2.39, 50
2, item2, TARGET, 4.99, 52
3, item3, SAMS CLUB, 8.19, 15
4, item4, KROGER, 12.49, 33
5, item6, WEGMANS, 32.69, 75
6, item6, TARGET, 12.99, 25
7, item7, SAMS CLUB, 8.19, 92
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下 awk 但不起作用:

awk '{gsub("SAMS CLUB","SAM\'S CLUB",$3);print}' filename1 > filename2
Run Code Online (Sandbox Code Playgroud)

linux awk csv replace

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

无法为文件做头或尾

我有一个 .CSV 文件,在传递file test_file.csv命令时输出如下:

test_file.csv: ISO-8859 English text, with CR line terminators
Run Code Online (Sandbox Code Playgroud)

当我cat, head or tail在文件上使用命令时,它会返回屏幕上的总文件内容。如何转换行终止符,以便我能够使用这些命令并使用该文件进行进一步处理。另外,我想知道是否有办法知道这个文件是如何生成/创建的?请建议。

linux file-format csv newlines

2
推荐指数
1
解决办法
1289
查看次数

根据上一个命令中的变量,使用 awk 或 sed 从文件中删除行

我有一个包含字符串和数字的 CSV 文件(比如 temp.csv)。我需要删除文件中行开头包含特定字符串模式的行。例如,这是我的文件 -

req1,incl_patt1,excl_patt1,2,ind1
req1,incl_patt2,excl_patt2,1,ind1
req1,incl_patt3,excl_patt3,4,ind1
req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
Run Code Online (Sandbox Code Playgroud)

req_file_curr在命令中 写一个模式~ $ req_file_curr=req1

echo "${req_file_curr}" 给出输出为 req1

但是,在sed命令中使用它时,如下所示:

sed '/\"${req_file_curr}\"/d' temp.csv
Run Code Online (Sandbox Code Playgroud)

给出输出为

req1,incl_patt1,excl_patt1,2,ind1
req1,incl_patt2,excl_patt2,1,ind1
req1,incl_patt3,excl_patt3,4,ind1
req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
Run Code Online (Sandbox Code Playgroud)

我期待输出为

req2,inc_patt1,exc_patt1,1,ind2
req2,inc_patt2,exc_patt2,2,ind2
req2,inc_patt3,exc_patt3,3,ind2
req3,pattern3,expatt3,1,ind3
req4,pattern4,expatt4,1,ind4
Run Code Online (Sandbox Code Playgroud)

如何使用 shell 中的变量作为模式来查找 insedawk

sed awk text-processing

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

标签 统计

awk ×5

csv ×5

linux ×4

sed ×4

text-processing ×2

bash ×1

exit ×1

file-format ×1

filter ×1

newlines ×1

replace ×1

sftp ×1

shell ×1

ssh ×1