首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将空列替换为其他列并向其添加字符串

将空列替换为其他列并向其添加字符串
EN

Stack Overflow用户
提问于 2019-12-16 16:51:42
回答 3查看 151关注 0票数 0

我有一个如下的dat文件。

代码语言:javascript
运行
复制
1436667|disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897090|""|""|""|""|....
|disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091|""|""|||

这里的"|“是字段分隔符。

我有一个场景,如下。

我需要检查第一列是否为空,如果第二列不为空,则必须替换为第二列,并向其添加一个字符串。

我尝试了下面这样的方法。

代码语言:javascript
运行
复制
 awk -F '|' '$2 && !$1{ $1=$2 }1' Asset.csv

上面的命令删除了字段分隔符,并在没有字段分隔符的情况下获得输出。如果我向它添加字符串,如下所示。

代码语言:javascript
运行
复制
awk -F '|' '$2 && !$1{ $1=$2+"_ABC" }1' Asset.csv

第一列的值为0。

请你建议一下怎么做,并在第一栏中添加一个字符串。

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2019-12-16 18:23:56

问题清晰度是不存在的。

我已尝试使用此代码检查第一个字段是否为空,希望对您有所帮助。谢谢

代码语言:javascript
运行
复制
cat datfile

1436667|disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897090|""|""|""|""|....disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091 disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091“

代码语言:javascript
运行
复制
#!/bin/bash

VAR=`cat datfile`
#echo $VAR



IFS='|' read -r FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH <<< "$VAR"

echo $FIRST
echo $SECOND
echo $THIRD
echo $FOURTH
echo $FIFTH
echo $SIXTH
echo $SEVENTH



# CHECK First string is empty

if [ -z "$FIRST" ]
then
echo "\$FIRST is empty"
else
echo "\$FIRST is not empty"
fi


 ./testlab.sh
 1436667
disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897090
""
""
""
""
....disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091 disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091 "" ""
$FIRST is not empty
票数 0
EN

Stack Overflow用户

发布于 2019-12-16 20:05:16

代码语言:javascript
运行
复制
awk -F '|' '$1=="" {$1=$2}; $1== $2 { $1=$1"_ABC"} ;1' OFS='|' Asset.csv

这对我很有效..谢谢

如果你有更优化的解决方案,你仍然可以分享。

票数 0
EN

Stack Overflow用户

发布于 2019-12-16 23:33:43

您可以使用此解决方案:

代码语言:javascript
运行
复制
awk 'BEGIN{FS=OFS="|"} $1=="" && $2!=""{$1=$2 "_ABC"} 1' file

代码语言:javascript
运行
复制
1436667|disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897090|""|""|""|""|....
disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091_ABC|disne-2h.xco.caDIAS0000000000897089-DIAS0000000000897091|""|""|||
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59353190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档