Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 如果匹配字符串模式,Linux将删除空格/列_Awk_Sed_Grep_Cut - Fatal编程技术网

Awk 如果匹配字符串模式,Linux将删除空格/列

Awk 如果匹配字符串模式,Linux将删除空格/列,awk,sed,grep,cut,Awk,Sed,Grep,Cut,我希望本机shell中的awk或sed或任何其他显示筛选机制能够从匹配的字符串行中删除空间&当不匹配时,不要删除两个字符串(列)之间的任何空间。然后显示输出 我的档案: # cat test2 col0 col1 col2 col3 col4 col5 ln1 abc def ghi jkl mno ln2 abc defghi jkl mno pqr # cat test2 col0 col1 col2 col3 col4 col5 ln1 abc def ghi jkl mno ln2 a

我希望本机shell中的awk或sed或任何其他显示筛选机制能够从匹配的字符串行中删除空间&当不匹配时,不要删除两个字符串(列)之间的任何空间。然后显示输出

我的档案:

# cat test2
col0 col1 col2 col3 col4 col5
ln1 abc def ghi jkl mno
ln2 abc defghi jkl mno pqr
# cat test2
col0 col1 col2 col3 col4 col5
ln1 abc def ghi jkl mno
ln2 abc defghi jkl mno pqr
ln3 aaa bbb ccc ddd eee
ln4 aaa bbbccc ddd eee
我的输出我希望是:

# <something to view/grep/filter with> test2
col0 col1 col2 col3 col4 col5
ln1 abc defghi jkl mno
ln2 abc defghi jkl mno pqr
输出文件:

# <something to view/grep/filter with> test2
col0 col1 col2 col3 col4 col5
ln1 abc def ghi jkl mno
ln2 abc defghi jkl mno pqr
ln3 aaa bbbccc ddd eee
ln4 aaa bbbccc ddd eee
#测试2
col0 col1 col2 col3 col4 col5
ln1 abc def ghi jkl mno
ln2 abc defghi jkl mno pqr
ln3 aaa bbbccc ddd eee
ln4 aaa bbbccc ddd eee

如果这不是您想要的,请编辑您的问题以澄清您的需求,并提供更好地说明您的问题的输入/输出。

非常感谢您的回答。这正是我想要实现的。但我想要求一个小的修改。是否可以使用列号而不是列中的实际文本。因为在我的情况下,行将不断变化。例如,如果我的原始文件如下所示,那么上述解决方案将无法工作
col0 col1 col2 col3 col4 col5 ln1 abc def ghi jkl mno ln2 abc defghi jkl mno pqr ln3 aaa bbb ccc ddd eee ln4 aaa bbbccc ddd eee fff
您无法将格式化文本放入注释中,因此请勿尝试。如果你的问题不能充分反映你的需求,那么只需编辑你的问题就可以了。当然,由于你在跟进前两天就离开了,很可能没有人会再看它了,所以现在很难得到答案。你编辑的问题没有明确说明标准是什么。为什么第3行删除了一个空格?你需要帮助的规则或模式是什么?如果它总是第三行,则
sed'3s///2'
(如果您的
sed
支持/2标志来替换第二行)。如果输出需要五列,为什么在示例中第一行和第二行没有更改?
sed 's/def ghi/defghi/' file