Sed 从另一个文件中的文本文件中删除行
这是我上一个问题的继续。 我正在使用前面的示例尝试获得以下输出?我是awk的新手,请给我一些建议Sed 从另一个文件中的文本文件中删除行,sed,awk,Sed,Awk,这是我上一个问题的继续。 我正在使用前面的示例尝试获得以下输出?我是awk的新手,请给我一些建议 csh 1 A 1 27.704 6.347 csh 2 A 1 28.832 5.553 csh 3 A 1 28.324 4.589 csh 6 A 1 28.378 4.899 您需要将上一个问题中提供此问题规范的所有信息结转 这可能适用于您
csh 1 A 1 27.704 6.347
csh 2 A 1 28.832 5.553
csh 3 A 1 28.324 4.589
csh 6 A 1 28.378 4.899
您需要将上一个问题中提供此问题规范的所有信息结转 这可能适用于您:
awk '$3 == "A"' inputfile
sed '/^ *chs.*A/!d' file
您可以用glob(可能是*
)替换“inputfile”,以便处理多个文件,就像它们是cat
合并在一起一样
如果不清楚您希望如何处理多个文件,我只能这样做。这可能适合您:
awk '$3 == "A"' inputfile
sed '/^ *chs.*A/!d' file
从前面的答案中提取一些代码,您可以使用以下代码:
while read word; do
if [[ $word =~ ^(....)(.)$ ]]; then
filename="yy/${BASH_REMATCH[1]}.txt"
letter=${BASH_REMATCH[2]}
[[ -f $filename ]] && sed -i.bak -n "/^ *csh.*$letter/p" $filename
fi
done < xx.txt
读单词时;做
如果[[$word=~^(..)(..$]);然后
filename=“yy/${BASH_重新匹配[1]}.txt”
字母=${BASH_重赛[2]}
[[-f$filename]]&&sed-i.bak-n“/^*csh.*$letter/p”$filename
fi
完成
非常感谢您的回答。我想删除原始文件中以“csh”开头的其他行(在本例中:删除除“A”之外以“csh”开头的其他行),而不是打印。如何更改您的代码?看起来您在csh之前有一些空格。刚刚编辑了我的答案,请立即尝试。此代码无效。我上一个问题中的代码工作正常。谢谢。如果你想要的与上一个问题相反,那么:sed的^^*\(.*\)\(.\)$sed-i.bak/^*csh.*\2/!d“yy/\1.txt |'xx.txt | sh
应该符合要求。注意,代码>否定条件。