Sed 从另一个文件中的文本文件中删除行

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 您需要将上一个问题中提供此问题规范的所有信息结转 这可能适用于您

这是我上一个问题的继续。

我正在使用前面的示例尝试获得以下输出?我是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

您需要将上一个问题中提供此问题规范的所有信息结转

这可能适用于您:

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
应该符合要求。注意,
否定条件。